常見web攻擊的加固方法

0x01 XSS
1.過濾特殊字符(XSS Filter)
過濾惡意標籤+屬性
(1)href僞協議

<a href=javascript:('/a/')>test</a>

(2)HTML新增標籤

<math><maction xlink:href=><embed src=>

(3)利用DataUrl協議

<a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTs8L3NjcmlwdD4=">

2.使用實體化編碼
(1)HTML編碼

編碼前	編碼後
&		&amp
<		&lt;
>		&gt;&quot;&#x27; &apos;
/		&#x2F;

(2)Javascript編碼

編碼前	編碼後
‘		\’;
“		\”;
\		\\;
/		\/;

3.Http Only
PHP下通過修改php.ini的session.cookie_httponly=true

0x02 CSRF
1.添加中間環節
(1)添加驗證過程
在執行關鍵操作的時候,讓用戶進行二次確認或重新輸入一次密碼。
(2)添加驗證碼
2.對請求進行校驗
(1)referer
(2)csrf token
添加一個有較強隨機性,一次性的token進行校驗。

0x03 SSRF
1.雙向過濾用戶端參數
黑名單限制如file、gopher等協議。
2.網絡限制
對服務器能訪問的內網地址及端口進行最小化限制。

0x04 SQL
1.參數過濾或編碼
select、union、order by等sql查詢函數。
‘、“、;、&等特殊符號。
2.預編譯與參數綁定
(1)在客戶端進行預編譯和參數綁定
(2)在服務端進行預編譯(存儲過程),在客戶端進行參數綁定
當綁定的參數是可選的字段時,例如表名稱、列名稱、排序方式等,而非用戶輸入的內容,是不可以使用參數綁定的。
3.白名單
對不可做參數綁定的,可限制輸入內容爲預先設置好的幾個值,如果不是就返回錯誤。

0x05 文件上傳
1.文件類型檢測
(1)文件擴展名
推薦使用白名單方式。
(2)文件MIME類型
通過改Content-Type非常容易繞過。
2.文件內容檢測
(1)文件頭檢測
圖片馬可繞過。
(2)圖像二次渲染
通過對上傳的圖片進行二次渲染,調整大小,然後再採集圖片輸出爲文件。
3.文件解析攻擊
(1).htaccess
<FilesMatch “jpg”>SetHandler application/x-httpd-php#將jpg後綴的文件解析爲php
僅對當前目錄設置htaccess,不對網站下所有文件夾做設置。
(2)apache
a.php.txt.jpg->a.php
升級apache版本
(3)iis
a.asp;.jpg->a.asp
升級iis版本
(4)php
nginx,iis7.0/7.5
a.jpg/b.php->a.php
升級php版本

0x06 文件包含攻擊
1.檢測被包含文件的後綴
對包含的文件後綴進行黑白名單校驗。
2.檢測被包含文件的目錄
利用配置文件中對用戶可訪問的目錄進行限制。php open_base_dir
3.升級PHP版本
all_url_include=off;

0x07 命令執行攻擊
1.PHP環境下的命令執行
在php.ini中通過設置disable_functions()禁用exec()、system()、shell_exec()等危險函數。
2.框架類的命令執行
如struts2,thinkphp,建議升級版本。
3.中間件類的命令執行
如Weblogic、Jboss,及時打補丁。

0x08 明文傳輸
對傳輸的用戶名、密碼進行加密。(MD5)

0x09 暴力破解
1.添加強度較高的驗證碼,不易被破解。
2.修改密碼設置規則,提高用戶的密碼強度。
3.同一賬號登陸次數鎖定,生成鎖定日誌。
4.定期排查弱口令。

0x10 水平越權&垂直越權
在參數可控的情況下,通過session驗證個人身份是否與用戶修改後的代表身份的信息匹配,若不匹配禁止訪問。

0x11 弱驗證碼
1.更改驗證碼的類型,由數字轉爲點擊或拖動類型的圖形驗證碼。
2.設置驗證碼的刷新頻率,保證每一次提交後驗證碼刷新一次。
3.限制驗證碼的有效期,半分鐘或一分鐘後自動刷新。

0x12 敏感信息泄露
屏蔽網站後臺、中間件後臺、網站或程序報錯信息,刪除備份文件、測試文件。
網站的Banner(服務器版本、端口、開發語言)信息泄露,參考:
https://blog.csdn.net/hibari_18/article/details/104904387

0x13 XML注入、XPATH注入、LDAP注入、JPA注入
1.使用標準的xml解析庫進行xml文件的寫操作。
2.對插入的數據進行編碼、過濾。
3.JPA可通過參數綁定的方式防止注入的產生。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章