如何在php中修補xss漏洞,Xss漏洞修復

本文目錄一覽:

如何測試XSS漏洞

XSS跨站漏洞分為大致三種:儲存型XSS,反射型XSS,和DOM型XSS,一般都是由於網站對用戶輸入的參數過濾不嚴格而調用瀏覽器的JS而產生的。XSS幾乎每個網站都存在,google,百度,360等都存在,存在和危害範圍廣,危害安全性大。

具體利用的話:

儲存型XSS,一般是構造一個比如說”scriptalert(“XSS”)/script”的JS的彈窗代碼進行測試,看是否提交後在頁面彈窗,這種儲存型XSS是被寫入到頁面當中的,如果管理員不處理,那麼將永久存在,這種XSS攻擊者可以通過留言等提交方式,把惡意代碼植入到伺服器網站上, 一般用於盜取COOKIE獲取管理員的信息和許可權。

反射型XSS,一般是在瀏覽器的輸入欄也就是urlget請求那裡輸入XSS代碼,例如:127.0.0.1/admin.php?key=”scriptalert(“xss”)/script,也是彈窗JS代碼。當攻擊者發送一個帶有XSS代碼的url參數給受害者,那麼受害者可能會使自己的cookie被盜取或者「彈框「,這種XSS一次性使用,危害比儲存型要小很多。

dom型:常用於挖掘,是因為api代碼審計不嚴所產生的,這種dom的XSS彈窗可利用和危害性並不是很大,大多用於釣魚。比起存儲型和反射型,DOM型並不常用。

缺點:

1、耗時間

2、有一定幾率不成功

3、沒有相應的軟體來完成自動化攻擊

4、前期需要基本的html、js功底,後期需要紮實的html、js、actionscript2/3.0等語言的功底

5、是一種被動的攻擊手法

6、對website有http-only、crossdomian.xml沒有用

所以樓主如果想更加深層次的學習XSS的話,最好有紮實的前後端開發基礎,還要學會代碼審計等等。

推薦的話,書籍建議看看《白帽子講web安全》,《XSS跨站腳本攻擊剖析與防禦》

一般配合的話,kalilinux裡面的BEFF是個很著名的XSS漏洞利用工具,樓主有興趣可以去看看。

純手工打字,望樓主採納。

幾種極其隱蔽的XSS注入的防護

XSS注入的本質

就是: 某網頁中根據用戶的輸入, 不期待地生成了可執行的js代碼, 並且js得到了瀏覽器的執行. 意思是說, 發給瀏覽器的字元串中, 包含了一段非法的js代碼, 而這段代碼跟用戶的輸入有關.

常見的XSS注入防護, 可以通過簡單的 htmlspecialchars(轉義HTML特殊字元), strip_tags(清除HTML標籤) 來解決, 但是, 還有一些隱蔽的XSS注入不能通過這兩個方法來解決, 而且, 有時業務需要不允許清除HTML標籤和特殊字元. 下面列舉幾種隱蔽的XSS注入方法:

IE6/7 UTF7 XSS 漏洞攻擊

隱蔽指數: 5

傷害指數: 5

這個漏洞非常隱蔽, 因為它讓出現漏洞的網頁看起來只有英文字母(ASCII字元), 並沒有非法字元, htmlspecialchars 和 strip_tags 函數對這種攻擊沒有作用. 不過, 這個攻擊只對 IE6/IE7 起作用, 從 IE8 起微軟已經修復了. 你可以把下面這段代碼保存到一個文本文件中(前面不要有空格和換行), 然後用 IE6 打開試試(沒有惡意代碼, 只是一個演示):

+/v8 +ADw-script+AD4-alert(document.location)+ADw-/script+AD4-

最容易中招的就是 JSONP 的應用了, 解決方法是把非字母和數字下劃線的字元全部過濾掉. 還有一種方法是在網頁開始輸出空格或者換行, 這樣, UTF7-XSS 就不能起作用了.

因為只對非常老版本的 IE6/IE7 造成傷害, 對 Firefox/Chrome 沒有傷害, 所以傷害指數只能給 4 顆星.

參考資料:UTF7-XSS不正確地拼接 JavaScript/JSON 代碼段

隱蔽指數: 5

傷害指數: 5

Web 前端程序員經常在 PHP 代碼或者某些模板語言中, 動態地生成一些 JavaScript 代碼片段, 例如最常見的:

var a = ‘?php echo htmlspecialchars($name); ?’;

不想, $name 是通過用戶輸入的, 當用戶輸入a』; alert(1); 時, 就形成了非法的JavaScript 代碼, 也就是XSS 注入了.

只需要把上面的代碼改成:

var a = ?php echo json_encode($name); ?;

去掉單引號, 利用 PHP 的 json_encode() 函數來生成表示字元串的字元串. 這樣做是因為,

最好用 json_encode() 函數來生成所有的 JSON 串, 而不要試圖自己去拼接

. 程序員總是犯這樣的錯誤: 自己去解析 HTTP 報文, 而不是用現成的成熟的庫來解析. 用 json_encode() 的好處還在於, 即使業務要求我要保留單引號時, XSS注入也可以避免.

隱蔽指數最高級, 傷害所有的通用瀏覽器

. 這種 XSS 注入方式具有非常重要的參考意義.

最後, 根據工作中的經驗, 以及我自己和別人犯過的錯, 我總結出一個定理: 沒有一勞永逸的單一方法可以解決所有 XSS 注入問題.

有用的經驗:輸出 HTML 代碼時 htmlspecialchars輸出JavaScript 代碼時 json_encode

輸入過濾應該用於解決業務限制, 而不是用於解決 XSS 注入(與嚴進寬出的原則相悖, 所以本條值得討論)討論:上文提到的經驗第3條, 是一種寬進嚴出的原則, 和嚴進寬出原則是相悖的. 其實, 我認為不應該把嚴進寬出作為一條偽真理, 好像除了它其它的說法都不對了似的. 寬進嚴出和嚴進寬出應該具有完全相等的地位, 根據實現的成本進行取捨.

例如, 用戶的名字可以採用嚴進寬出原則, 不允許用戶填寫單引號, 大於號小於號等. 但是用戶的簽名呢? 難道就不能填單引號?

原創文章,作者:BWSLZ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/329817.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
BWSLZ的頭像BWSLZ
上一篇 2025-01-14 18:55
下一篇 2025-01-14 18:55

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • 如何在PyCharm中安裝OpenCV?

    本文將從以下幾個方面詳細介紹如何在PyCharm中安裝OpenCV。 一、安裝Python 在安裝OpenCV之前,請確保已經安裝了Python。 如果您還沒有安裝Python,可…

    編程 2025-04-29
  • 如何在Python中實現平方運算?

    在Python中,平方運算是常見的數學運算之一。本文將從多個方面詳細闡述如何在Python中實現平方運算。 一、使用乘法運算實現平方 平方運算就是一個數乘以自己,因此可以使用乘法運…

    編程 2025-04-29
  • 如何在Python中找出所有的三位水仙花數

    本文將介紹如何使用Python語言編寫程序,找出所有的三位水仙花數。 一、什麼是水仙花數 水仙花數也稱為自戀數,是指一個n位數(n≥3),其各位數字的n次方和等於該數本身。例如,1…

    編程 2025-04-29
  • 如何在樹莓派上安裝Windows 7系統?

    隨著樹莓派的普及,許多用戶想在樹莓派上安裝Windows 7操作系統。 一、準備工作 在開始之前,需要準備以下材料: 1.樹莓派4B一台; 2.一張8GB以上的SD卡; 3.下載並…

    編程 2025-04-29
  • 如何在代碼中打出正確的橫杆

    在編程中,橫杆是一個很常見的符號,但是有些人可能會在打橫杆時出錯。本文將從多個方面詳細介紹如何在代碼中打出正確的橫杆。 一、正常使用橫杆 在代碼中,直接使用「-」即可打出橫杆。例如…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 如何在Spring Cloud中整合騰訊雲TSF

    本篇文章將介紹如何在Spring Cloud中整合騰訊雲TSF,並提供完整的代碼示例。 一、TSF簡介 TSF (Tencent Serverless Framework)是騰訊雲…

    編程 2025-04-29
  • 如何在Python中輸出漢字和數字

    本文將從多個方面詳細介紹如何在Python中輸出漢字和數字,並提供代碼示例。 一、輸出漢字 要在Python中輸出漢字,需要先確保Python默認編碼是utf-8,這可以通過在代碼…

    編程 2025-04-28
  • 如何在伺服器上運行網站

    想要在伺服器上運行網站,需要按照以下步驟進行配置和部署。 一、選擇伺服器和域名 想要在伺服器上運行網站,首先需要選擇一台雲伺服器或者自己搭建的伺服器。雲伺服器會提供更好的穩定性和可…

    編程 2025-04-28

發表回復

登錄後才能評論