常見的web安全攻擊手段有不少,好比SQL注入,XSS,CSRF,HTTP頭攻擊,cookie攻擊,重定向攻擊,上傳文件攻擊等,其中大多數均可以經過三種方法——過濾代理轉義(實體化)來解決。php
使用工具--SQLmap SQL注入之SQLmap入門 - FreeBuf.COM | 關注黑客與極客html
兩種類型:常規注入和寬字節注入mysql
常規注入方式,一般沒有任何過濾,直接把參數存放到了SQL語句當中nginx
寬字節注入:web
將PHP的內置mysql_real_escape_string()函數用做任何用戶輸入的包裝器。ajax
這個函數對字符串中的字符進行轉義,使字符串不可能傳遞撇號等特殊字符,並讓mysql根據特殊字符進行操做。sql
根本上防止SQL注入的方法,就是參數化查詢或者作詞法分析。shell
雖然SQL注入漏洞很是多,可是防範起來卻挺簡單的,下面介紹幾個過濾函數和類:數據庫
過濾函數和類跨域
XSS,跨站式腳本攻擊,它指的是惡意攻擊者往 Web 頁面裏插入惡意 html 代碼,當用戶瀏覽該頁之時,嵌入其中 Web 裏面的 html 代碼會被執行,從而達到惡意的特殊目的。
XSS屬於被動式的攻擊。因此每每很差防止。
XSS漏洞挖掘方法
XSS攻擊分爲三種:反射型,存儲型,dom型
反射型,危害小,通常
反射型XSS原理:就是經過給別人發送帶有惡意腳本代碼參數的URL,當URL地址被打開時,特定的代碼參數會被HTML解析,執行,如此就能夠獲取用戶的COOIKE,進而盜號登錄。好比hack甲構造好修改密碼的URL並把密碼修改爲123,可是修改密碼只有在登錄方乙才能修改,乙在登錄的狀況下點擊甲構造好的URL將直接在不知情的狀況下修改密碼。
特色是:非持久化,必須用戶點擊帶有特定參數的連接才能引發。
存儲型,危害大,影響時間長
存儲型XSS原理,假設你打開了一篇正常的文章頁面,下面有評論功能。這個時候你去評論了一下,在文本框中輸入了一些JavaScript代碼,提交以後,你刷新這個頁面後發現剛剛提交的代碼又被原封不動的返回來而且執行了。
這個時候你會想,我要寫一段 JavaScript 代碼獲取 cookie 信息,而後經過ajax發送到本身的服務器去。構造好代碼後你把連接發給其餘的朋友,或者網站的管理員,他們打開 JavaScript 代碼就執行了,你服務器就接收到了sessionid,你就能夠拿到他的用戶權限了。
dom型,特殊的一種
dom型 XSS 是由於 JavaScript 執行了dom 操做,所形成的 XSS 漏洞,具體以下圖。能夠看到雖然通過 html 轉義了,可是這塊代碼在返回到 html 中,又被 JavaScript 做爲 dom 元素操做。那當我輸入
?name=<img src=1 onerror=alert(1)>
的時候依然會存在 XSS 漏洞。
比較主流的XSS防止手段主要有兩種,
一種是在用戶輸入時將異常關鍵字過濾,
另外一種是在頁面渲染時將Html網頁實體化轉義。
可是,若是咱們必需要輸入所謂「敏感字符」的時候,由怎麼辦?怎麼處理這種數據和業務數據有衝突的狀況?
第二種Html內容實體化轉義的方式,又太依賴開發習慣,不靠譜。
那麼還有一種方法就是在框架層面,根據實際狀況具體分析,XSS注入我也不怕不怕啦——PHP從框架層面屏蔽XSS的思考和實踐 - 推酷
CSRF跨站式請求僞造。CSRF在用戶不知情的狀況下,冒充用戶發起請求,完成一些違背用戶意願的請求(如惡意發帖,刪帖,改密碼,發郵件)。
與XSS跨站式腳本攻擊不一樣的是,XSS是被動的,更像是一個陷阱,而CSRF則是主動的,跨域假裝成用戶發送請求來達到目的。一般來講CSRF是基於XSS實現的,可是XSS更偏向於方法論,而CSRF更偏向於一種形式。
好比...
咱們來看下面的一段代碼,這個表單當被訪問到的時候,用戶就退出了登陸。假設有一個轉帳的表單,只須要填寫對方的用戶名,和金額就能夠,那若是我提早把 URL 構造好,發給受害者,當點擊後,錢就被轉走了。
或者我把這個 URL 放到個人網頁中,經過<img src="我構造的URL" ,當其餘人打開個人網址後,就中招了。
若是三個判斷都沒有,那麼就存在了 CSRF 漏洞,CSRF 不只限於 GET 請求, POST 請求一樣存在。
圖片驗證碼,這個想必你們都知道,可是用戶體驗並很差,咱們能夠看下面的一些處理方法。
token驗證
token驗證方法以下,每次訪問表單頁的時候,生成一個不可預測的token存放在服務器session中,另一份放頁面中,提交表單的時候須要把這個token帶過去,接收表單的時候先驗證一下token是否合法。
Referer信息驗證
大多數狀況下,瀏覽器訪問一個地址,其中header頭裏面會包含Referer信息,裏面存儲了請求是從哪裏發起的。
若是HTTP頭裏包含有Referer的時候,咱們能夠區分請求是同域下仍是跨站發起的,因此咱們也能夠經過判斷有問題的請求是不是同域下發起的來防護 CSRF 攻擊。
Referer 驗證的時候有幾點須要注意,若是判斷Referer是否包含 *.XXX.com,若是有子域名有漏洞,會存在繞過的可能。
若是判斷的條件的是Referer中是否包含字符 ‘xxx.com’ 那攻擊者在他目錄中創建一個 xxx.com 文件夾一樣存在繞過的可能。若是能夠最合適的判斷是,直接判斷是否等於當前域名。
DDOS攻擊全稱爲:分佈式拒絕服務攻擊,是指擊者利用大量「肉雞」對攻擊目標發動大量的正常或非正常請求、耗盡目標主機資源或網絡資源,從而使被攻擊的主機不能爲合法用戶提供服務。
DDOS攻擊的本質是:利用木桶原理,尋找利用系統應用的瓶頸;阻塞和耗盡;當前問題:用戶的帶寬小於攻擊的規模,噪聲訪問帶寬成爲木桶的短板。
其實cc攻擊也屬於ddos攻擊的一種。
對於這類的攻擊,用軟硬件結合的方式來防護是最有效的。單獨 防護都是蠻吃力的
CC攻擊時一種以網站頁面爲攻擊目標的應用層攻擊,攻擊時選擇服務器開放的頁面中須要較多資源開銷的應用。例如佔用大量CPU資源進行運算或須要大量訪問數據庫的應用。主要是以.asp、.jsp、.php、.cgi等結尾的頁面資源。
在CC防禦上,經濟實力好的能夠選擇購買DDOS高防設備,由於CC攻擊也屬於DDOS攻擊的一種。經濟實力通常,能夠考慮安裝防禦軟件。安全狗或者360網站衛士。我的趨向於安全狗,同時安裝服務器安全狗和網站安全狗能夠有效地防禦CC攻擊。能夠有效地防止服務器由於受到CC攻擊而產生CPU使用率100%的狀況出現。
什麼是CC攻擊?
CC攻擊是DDOS(分佈式拒絕服務)的一種,相比其它的DDOS攻擊CC彷佛更有技術含量一些。這種攻擊你見不到真實源IP,見不到特別大的異常流量,但形成服務器沒法進行正常鏈接。最讓站長們憂慮的是這種攻擊技術含量低,利用更換IP代理工具和一些IP代理一個初、中級的電腦水平的用戶就可以實施攻擊。所以,你們有必要了解CC攻擊的原理及若是發現CC攻擊和對其的防範措施。
http://baike.baidu.com/item/c...
RIPS
它最大的亮點在於調用了 PHP 內置解析器接口token_get_all,
而且使用Parser作了語法分析,實現了跨文件的變量及函數追蹤,掃描結果中很是直觀地展現了漏洞造成及變量傳遞過程,誤報率很是低。
RIPS 可以發現 SQL 注入、XSS 跨站、文件包含、代碼執行、文件讀取等多種漏洞,支持多種樣式的代碼高亮。比較有意思的是,它還支持自動生成漏洞利用。
安裝方法
下載地址:https://jaist.dl.sourceforge....
解壓到任意一個PHP的運行目錄
在瀏覽器輸入對應網址,能夠經過下圖看到有一個path 在裏面填寫你要分析的項目文件路徑,點擊 scan.
seay源代碼審計系統
傻瓜化的自動審計 。
支持php代碼調試 。
函數/變量定位 。
生成審計報告。
自定義審計規則 。
mysql數據庫管理 。
黑盒敏感信息泄露一鍵審計 。
支持正則匹配調試 。
編輯保存文件 。
POST數據包提交 。
Taint 能夠用來檢測隱藏的 XSS code, SQL 注入, Shell注入等漏洞,而且這些漏洞若是要用靜態分析工具去排查, 將會很是困難, 咱們來看下面這張圖:
安裝方法
下載 taint: http://pecl.php.net/package/t...
配置
/usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config make && make install
更加詳細的能夠參考:http://www.cnblogs.com/linzhe...
應用場景
開發團隊要求每一個人都作到很是的安全比較難,可是把taint安裝在開發環境,特別適合,一看到 warning 信息通常都回去改。
功能介紹
防止 sql 注入,本地包含,部分溢出,fuzzing 測試,xss,SSRF 等 web攻擊。
防止 svn /備份之類文件泄漏。
防止 ApacheBench 之類壓力測試工具的攻擊。
屏蔽常見的掃描黑客工具,掃描器。
屏蔽異常的網絡請求。
屏蔽圖片附件類目錄 php 執行權限。
防止 webshell 上傳。
安裝方法
安裝依賴: luajit 、ngx_devel_kit、nginx_lua_module
安裝nginx、ngx_lua_waf
在nginx.conf裏的 http 添加配置
詳細安裝文檔
效果圖