web安全基礎

web安全基礎

常見的web安全攻擊手段有不少,好比SQL注入,XSS,CSRF,HTTP頭攻擊,cookie攻擊,重定向攻擊,上傳文件攻擊等,其中大多數均可以經過三種方法——過濾代理轉義(實體化)來解決。php

SQL注入

SQL注入方法?

使用工具--SQLmap SQL注入之SQLmap入門 - FreeBuf.COM | 關注黑客與極客html

兩種類型:常規注入和寬字節注入mysql

常規注入方式,一般沒有任何過濾,直接把參數存放到了SQL語句當中nginx

寬字節注入:web

怎麼防止SQL注入?

將PHP的內置mysql_real_escape_string()函數用做任何用戶輸入的包裝器。ajax

這個函數對字符串中的字符進行轉義,使字符串不可能傳遞撇號等特殊字符,並讓mysql根據特殊字符進行操做。sql

根本上防止SQL注入的方法,就是參數化查詢或者作詞法分析。shell

雖然SQL注入漏洞很是多,可是防範起來卻挺簡單的,下面介紹幾個過濾函數和類:數據庫

  1. 魔術引號轉義(gdc,runtime,sybase)

clipboard.png

  1. 過濾函數和類跨域

    • addslashes(在指定的預約義字符前添加反斜槓。這些字符是單引號雙引號反斜線null)
    • mysql_real_escape_string
    • intval
  2. PDO 預處理

XSS攻擊

XSS攻擊方法?

XSS,跨站式腳本攻擊,它指的是惡意攻擊者往 Web 頁面裏插入惡意 html 代碼,當用戶瀏覽該頁之時,嵌入其中 Web 裏面的 html 代碼會被執行,從而達到惡意的特殊目的。

XSS屬於被動式的攻擊。因此每每很差防止。

XSS漏洞挖掘方法

  • 數據接收位置,檢查 _POST、$_COOKIE是否通過轉義。
  • 常見的反射型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 漏洞。

clipboard.png

怎麼防止XSS攻擊?

  • 過濾:strip_tags()去掉全部HTML,XML,PHP的標籤,
  • HTML內容實體化轉義:有兩種方式:在入口和出口,我建議是在入口處轉義,防止出口位置取出來的時候忘記轉義,若是已經在入口轉義了,出口位置就不用再次轉義。htmlspecialchars()等函數。
  • 框架層面:XSS注入我也不怕不怕啦——PHP從框架層面屏蔽XSS的思考和實踐 - 推酷
  • httpOnly 即便存在xss漏洞,能夠把危害大大下降。

比較主流的XSS防止手段主要有兩種,

一種是在用戶輸入時將異常關鍵字過濾,

另外一種是在頁面渲染時將Html網頁實體化轉義。

可是,若是咱們必需要輸入所謂「敏感字符」的時候,由怎麼辦?怎麼處理這種數據和業務數據有衝突的狀況?

第二種Html內容實體化轉義的方式,又太依賴開發習慣,不靠譜。

那麼還有一種方法就是在框架層面,根據實際狀況具體分析,XSS注入我也不怕不怕啦——PHP從框架層面屏蔽XSS的思考和實踐 - 推酷

CSRF攻擊

CSRF攻擊方法?

CSRF跨站式請求僞造。CSRF在用戶不知情的狀況下,冒充用戶發起請求,完成一些違背用戶意願的請求(如惡意發帖,刪帖,改密碼,發郵件)。

與XSS跨站式腳本攻擊不一樣的是,XSS是被動的,更像是一個陷阱,而CSRF則是主動的,跨域假裝成用戶發送請求來達到目的。一般來講CSRF是基於XSS實現的,可是XSS更偏向於方法論,而CSRF更偏向於一種形式。

好比...

咱們來看下面的一段代碼,這個表單當被訪問到的時候,用戶就退出了登陸。假設有一個轉帳的表單,只須要填寫對方的用戶名,和金額就能夠,那若是我提早把 URL 構造好,發給受害者,當點擊後,錢就被轉走了。

或者我把這個 URL 放到個人網頁中,經過<img src="我構造的URL" ,當其餘人打開個人網址後,就中招了。

clipboard.png

怎麼防止CSRF攻擊?

  • 圖片驗證碼
  • token驗證(默認POST請求的時候都要帶上token)
  • referer信息驗證(判斷HTTP的請求源是不是同源的)

若是三個判斷都沒有,那麼就存在了 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攻擊?

DDOS攻擊全稱爲:分佈式拒絕服務攻擊,是指擊者利用大量「肉雞」對攻擊目標發動大量的正常或非正常請求、耗盡目標主機資源或網絡資源,從而使被攻擊的主機不能爲合法用戶提供服務。
DDOS攻擊的本質是:利用木桶原理,尋找利用系統應用的瓶頸;阻塞和耗盡;當前問題:用戶的帶寬小於攻擊的規模,噪聲訪問帶寬成爲木桶的短板。

其實cc攻擊也屬於ddos攻擊的一種。

對於這類的攻擊,用軟硬件結合的方式來防護是最有效的。單獨 防護都是蠻吃力的

什麼是CC攻擊?

CC攻擊時一種以網站頁面爲攻擊目標的應用層攻擊,攻擊時選擇服務器開放的頁面中須要較多資源開銷的應用。例如佔用大量CPU資源進行運算或須要大量訪問數據庫的應用。主要是以.asp、.jsp、.php、.cgi等結尾的頁面資源。
在CC防禦上,經濟實力好的能夠選擇購買DDOS高防設備,由於CC攻擊也屬於DDOS攻擊的一種。經濟實力通常,能夠考慮安裝防禦軟件。安全狗或者360網站衛士。我的趨向於安全狗,同時安裝服務器安全狗和網站安全狗能夠有效地防禦CC攻擊。能夠有效地防止服務器由於受到CC攻擊而產生CPU使用率100%的狀況出現。

什麼是CC攻擊?

  1. CC攻擊來的IP都是真實的,分散的;
  2. CC攻擊的數據包都是正常的數據包;
  3. CC攻擊的請求,全都是有效的請求,沒法拒絕的請求;
  4. 由於cc攻擊的是網頁,服務器什麼均可以鏈接,ping也沒問題,可是網頁就是訪問不;
  5. 可是iis一開服務器一會就死,並且被攻擊後就老丟包。不知道是否是cc攻擊,syn 攻擊頻率才78ack攻擊頻率663.

DDOS攻擊和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 PHP安全拓展

Taint 能夠用來檢測隱藏的 XSS code, SQL 注入, Shell注入等漏洞,而且這些漏洞若是要用靜態分析工具去排查, 將會很是困難, 咱們來看下面這張圖:

clipboard.png

安裝方法

下載 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 信息通常都回去改。

ngx_lua_waf

功能介紹

防止 sql 注入,本地包含,部分溢出,fuzzing 測試,xss,SSRF 等 web攻擊。

防止 svn /備份之類文件泄漏。

防止 ApacheBench 之類壓力測試工具的攻擊。

屏蔽常見的掃描黑客工具,掃描器。

屏蔽異常的網絡請求。

屏蔽圖片附件類目錄 php 執行權限。

防止 webshell 上傳。

安裝方法

安裝依賴: luajit 、ngx_devel_kit、nginx_lua_module

安裝nginx、ngx_lua_waf

在nginx.conf裏的 http 添加配置

詳細安裝文檔

效果圖

image

相關文章
相關標籤/搜索