PHP實戰技巧(13)編程中的轉義符,以及引發的安全問題

2021-01-19 亮哥聊編程

前言

在上文中,我們使用 「\n」 表示換行,也就是說:echo "\n" 將輸出一個換行符。那如果我們希望原樣輸出\n 怎麼辦呢?

這就是今天要講的主題:轉義

什麼是轉義

在編程中,有大量的「特殊字符」,不僅僅包含前文說的 制表符,還有很多特殊字符,比如我們想輸出一個「"」(雙引號),用這樣的語法 echo """,只會報錯!

我們必須手動告知程序,將某個特殊字符當成普通字符處理,告知的方法就是通過:轉義符。

PS:幾乎所有的程式語言都需要轉義符,而非PHP特有。

轉義符

絕大多數情況下,它是一個「反斜槓」:\,將右側緊鄰的字符轉義成普通字符,用法如下:

echo "\"";中間的雙引號,被當成普通字符輸出。

echo "\\n";這個看起來有點怪,連續兩個\\是什麼意思? 第一個\表示轉義符,將第二個\轉義成普通字符。

HTML中的轉義字符

如果你想在網頁上輸出一個HTML標籤,比如:比如使用轉義字符,但並非 \ 而是:。\>

什麼時候需要用到它?

任何時候,只要你希望原樣輸出「特殊字符」就要使用它。

安全問題

很多時候,特殊字符的不當使用會造成程序報錯,並進一步引發安全問題。

SQL注入

select * from table where name='張三'上面的是很普通的SQL查詢,但如果以 1' or 1='1作為查詢條件呢?

SQL語句變成了

select * from table where name='1' or 1='1'整個SQL語義產生變化,如果這是一條敏感的查詢,比如管理員登陸,那麼就可能造成通用密碼。

這就是最古老的SQL注入:1 or 1,SQL注入類攻擊手法多樣,但是歸根究底就是利用了特殊字符。

xss攻擊

在數據寫入的過程中,將 js 代碼一併寫入,就可以藉此造成xss攻擊,xss一樣利用了特殊字符,所以我們也可以通過合理的轉義來解決此類問題。

常用的轉義函數

轉載自網上的一張表格,我看寫的還算完整就直接借用了。(來自 cnblogs.com)

總結

注意:不要對字符串重複進行轉義,可能會造成意想不到的結果。另外,在任何時候,都不應該相信來自用戶都輸入,這是每個程式設計師上崗第一天就應該收到的提醒。

相關焦點

  • 程式語言安全漏洞:C++、PHP、Java、Python、.Net 和 JavaScript
    程式語言安全漏洞:C++、PHP、Java、Python、.Net 和 JavaScript 靜態代碼分析安全公司 Veracode 最近發布了一份年度軟體安全狀態(SOSS)報告,其中的第 11 卷則揭示了用 .NET、C++、Java、JavaScript、PHP 或 Python
  • polarphp 0.0.1 alpha 發布:全新 PHP 運行時環境
    項目官網庫:https://gitee.com/polarphp/polarphphttps://github.com/polarphp/polarphp歡迎小夥伴們多多star ^ _ ^為什麼發起 polarphp 項目隨著Go和NodeJS的強勢崛起,PHP的市場份額逐漸被蠶食,而PHP官方仍然堅守在Web編程領域,有些東西越是想守住就越守不住
  • c語言和PHP,學哪個好?
    計科專業從事嵌入式開發多年,從現在的市場行情以及就業的機會上講php的就業空間還是大於C語言,但並不意味著C語言就已經被淘汰掉了,相反因為高級語言在應用領域使用的範圍比較廣泛,倒是顯得很多底層的程式語言成了稀缺的物種,畢竟對於底層的維護也是一項很重要的工作,況且C語言的使用範圍並不是很狹窄
  • php項目實戰:代碼講解之上下架某條主題
    本節我們將重點介紹在php項目實戰中,如何上下架某條主題。需要注意的是,在完成這些代碼之前,我們需要先建立對應的資料庫,設置對應的伺服器,這部分內容在之前的資料庫內容一節中有介紹,如果有疑問的話可以留言討論。
  • 有安全研究者混入了 PHP 8.0 開發組!
    來源 | 代碼審計(ID:white-hat-note)經歷了近半年的alpha版本測試後,PHP在2020年11月26號正式發布了8.0版本:https://www.php.net/releases/8.0/en.php今天我們就來瀏覽一下PHP 8.0中出現的主要特性,以及它給我們安全研究人員帶來的挑戰。
  • 編程與籃球
    這篇《編程與籃球》我醞釀了很久,現在寫下來給自己看,同時也分享給大家,希望能和有共同經歷的人產生共鳴。籃球和編程,這兩樣一個陪伴了我 13 年,一個陪伴了我 6 年。2006 年初中畢業的暑假,我第一次在 CCTV5 上看到了 NBA 的轉播,恰逢總決賽,那年韋德帶領的熱火戰勝了司機的小牛隊,帥炸的過人,熱血的比賽,讓我徹底愛上了這項運動,一不小心這份熱血堅持了 13 年。
  • 網絡安全與Kali Linux:Kali滲透測試與FTP密碼安全實戰技巧
    搜索:Kali與編程,學習更多網絡攻防乾貨!一、課前介紹在網絡的世界中,有著許多關於信息安全的隱患,其中有一種,是由於用戶個人所設置的密碼過於簡單而產生的,這類密碼被稱之為弱口令,黑客可以通過暴力破解弱口令,獲取用戶登錄個人帳號的密碼,通常這類情況的發生的一個重要原因便是人們的密碼安全意識過低,本次教程將會告訴你設置一個複雜強壯安全的密碼有多麼的重要。
  • 落地實戰化安全運營,奇安信發布安全編排自動化(SOAR)產品
    在RSAC2020期間,奇安信基於豐富的實戰化安全運營能力,在國內主流安全廠商中率先發布安全編排自動化與響應(SOAR)產品,幫助客戶大幅提升安全檢測和響應的效率,實現安全運營從「手動擋」的時代邁向「自動擋」時代。
  • PHP 還有未來麼,還是 25 歲就「壽終正寢」了?
    我敢打賭,對於本文的大多數讀者來說,他們對Web編程的首次嘗試均涉及PHP。但是,無論PHP擁有多麼豐富的歷史和廣泛的用戶基礎,都沒有理由在一個快速發展的領域中使用這門語言。雖然PHP將不可避免地在現有的應用程式中出現數年,但它在新站點中還會有未來嗎? 在展望未來之前,我們必須首先研究PHP在過去是如何發展的。
  • 截拳道 | 實戰中的拳法技巧
    擊拳的技巧不僅僅意味著出拳擊中目標,出拳的準確性和快速有力也僅為擊拳的一個方面。而另一面則還包括出拳時身體的姿勢,出拳與收拳的路線以及出拳的方法等其他要素。截拳道中最常用又最重要的拳法是右直拳,此拳很快,因為它只打出很短的距離,此拳很準,因為它是徑直向前打去;此拳用力最小,因而不會使人失去平衡。右直拳是由警戒式打出去的。
  • 計算機專業大二學生如何提升自身的編程實戰能力
    首先,對於計算機專業大二的同學來說,要想提升自身的編程實戰能力,可以通過三個渠道來實現,其一是參加專業比賽,其二是參加老師的課題組,其三是藉助於網際網路來參與到一些實踐項目當中,比如一些開源項目就是不錯的選擇。
  • 廣東培正學院錦行杯大學生網絡安全攻防對抗實戰圓滿落幕
    近年來,伴隨著信息技術應用的創新發展和新基建產業的加速布局,實戰型、實用型網絡安全人才需求急劇上升。傳統CTF答題模式對於培養實際防護作戰能力的作用很小,通過產教融合、攻防對抗實戰等多種方式培養和選拔實戰型網絡安全專業人才變得愈加緊迫。
  • 網站安全公司 修復PHP反序列化漏洞
    php的反序列化漏洞,php的盲點,也是一個常見的漏洞,這種漏洞充滿了一些場景,雖然有些很難調用,但是成功的後果很危險。漏洞形成的根本原因是沒有序列識別程序,從而導致序列字符串的檢測。反序列化漏洞不僅僅存在於php中,而且還存在於java、python中。基本上是一樣的原理。
  • 三個職業球員在比賽中常用的實戰技巧
    大家好,今天我們分享三個職業球員在比賽中常用的實戰技巧,希望大家喜歡!今天給大家帶來實戰中常用的三個技巧,都是我們真正需要的實戰技巧,我們現在開始:第一個技巧:這是每位隊員都會在場上遇到的事,就是在接球的同時防守隊員逼近上搶,我們要講的第一個技巧就是解決這個問題的。
  • Java語言和PHP語言有什麼區別
    最近,網絡上有很多網民就選擇哪種程式語言進行學習而糾結。例如,關於Java和php的優勢和不足,今天為大家分析一下Java語言和PHP語言的區別。一、Java語言的優勢和不足Java是非常熱門的程式語言,與其他高級語言相比,則是非常基礎的語言。並且Java是跨平臺的,具有Android,Swing,J2EE和J2ME等多種應用程式。就業方面比較廣泛,市場利用者的需求也很大。由於Java經常開發大型系統,因此大型企業往往需要大量的Java資源。
  • 從一道CTF題目談PHP中的命令執行
    最後通過使用glob()函數進行目錄掃描,發現了flag.php文件,以及file_get_contents()進行獲取,最終的payload如下?mess=$_="`0123"^"?`~``";${$_}[_](${$_}[__]);&_=assert&__=print_r(base64_encode(file_put_contents("flag.php")))最後再將其界面就可以得到最終的flag了。
  • KUBO編程幫助學習編碼技巧,為教育事業助力
    (原標題:KUBO編程幫助學習編碼技巧,為教育事業助力) 孩子的教育問題一直是各位家長們最為關注的話題之一
  • python編程30個常用技巧
    打開APP python編程30個常用技巧 深度學習這件小事 發表於 2020-12-24 15:07:51 6、把一個list中所有的字符串變成小寫:
  • 實戰中頭球的一些技巧
    大家好,今天我們給大家介紹實戰中頭球的一些技巧,希望大家喜歡。封面我們先從最基本的技巧開始,然後再結合場景給大家講講實際應用的情況。我們現在開始講解:三步助跑:我們要獲得更高的彈跳,所以我們需要助跑三步來提供動能。
  • 「編程貓」融資13億破記錄,編程是如何風靡到小學生課程的?
    新生代父母注重孩子的全面發展,育兒觀念也更加國際化,而編程作為「全球性語言」也被家長放進了孩子必學的興趣課清單中。 近日,編程貓宣布完成13億元D輪融資,打破了國內少兒編程最高融資記錄,為何今年以來這個賽道的融資情況這麼火熱? 編程在近兩年裡呈現出集中爆發的趨勢,少兒編程教育到底好不好做?發展途中又有哪些難題呢?