nginx伺服器防sql注入與溢位

2021-06-18 11:55:36 字數 3900 閱讀 4437

**不可能是全完美的,動態網頁在實用中難免會遇到sql注入的攻擊。而通過nginx的配置過濾,可以很好的避免被攻擊的可能。sql注入攻擊一般問號後面的請求引數,在nginx裡用$query_string表示 。

一、特殊字元過濾

例如url /plus/list.php?tid=19&mid=22' ,後面帶的單引號為非法的注入常用字元。而想避免這類攻擊,可以通過下面的判斷進行過濾。

if ( $query_string ~* ".*[;'<>].*" )

二、sql語句過濾

if ($request_uri ~* "(cost\()|(concat\()") 

if ($request_uri ~* "[+|(%20)]union[+|(%20)]")

if ($request_uri ~* "[+|(%20)]and[+|(%20)]")

if ($request_uri ~* "[+|(%20)]select[+|(%20)]")

三、檔案注入禁止

if ($block_file_injections = 1)四、溢位攻擊過濾

set $block_common_exploits 0;

if ($query_string ~ 「(<|%3c).*script.*(>|%3e)」)

if ($query_string ~ 「globals(=|\[|\%[0-9a-z])」)

if ($query_string ~ 「_request(=|\[|\%[0-9a-z])」)

if ($query_string ~ 「proc/self/environ」)

if ($query_string ~ 「mosconfig_[a-za-z_](=|\%3d)」)

if ($query_string ~ 「base64_(en|de)code\(.*\)」)

if ($block_common_exploits = 1)

五、spam欄位過濾

set $block_spam 0;

if ($query_string ~ 「\b(ultram|unicauca|valium|viagra|vicodin|xanax|ypxaieo)\b」)

if ($query_string ~ 「\b(erections|hoodia|huronriveracres|impotence|levitra|libido)\b」)

if ($query_string ~ 「\b(ambien|blue\spill|cialis|cocaine|ejaculation|erectile)\b」)

if ($query_string ~ 「\b(lipitor|phentermin|pro[sz]ac|sandyauer|tramadol|troyhamby)\b」)

if ($block_spam = 1)

六、user-agents頭過濾

}注:之所以返回444,是因為其完全不回應客戶端,比403或404等更加非常節省系統資源。

一、自動防護

if ($request_uri ~* \.(htm|do)\?(.*)$) 

if ($req ~* "(cost\()|(concat\()")

if ($req ~* "union[+|(%20)]")

if ($req ~* "and[+|(%20)]")

if ($req ~* "select[+|(%20)]")

1、這裡之所以使用$request_uri而未使用$query_string變數,因為通過$request_uri進行rewrite分割更精準。

2、%20代表的是空格,同上文不的是,我這裡把上面的空格匹配進行了取消。這樣像www.361way.com/aaa.do?select * from test之樣的也可以進行匹配。

3、上面的htm是偽靜態,實際上同.do一樣,也是動態檔案。為了便於和靜態檔案進行區分,這裡選擇了htm而不是html。

4、注意,最上面的url裡面的\? ,這個也分重要。如果沒有的話,www.361way.com/aaa.htm select * from test不會被過濾,而www.361way.com/aaa.htm?select * from test會被過濾。如果想將前面的也過濾,只需要把\? 取消即可。

二、日誌獲取,手動分析

具體哪些url有可能有注入漏洞而被人掃瞄了,可以利用下面的指令碼並通過mail傳送。

收件人1

收件人2

-s mail

.361way

.com -u

'site sql analay'-m

'this is nginxlog analay . see annex ,that is

may be injected into page .'

-xu

使用者名稱-

xp 密碼-a

/tmp

/nginxanalay

.tar

.gz

伺服器防sql注入注意事項

1 前端所有的輸入內容都需要進行特殊 過濾,過濾方法有很多,可以是js也可以是後端來操作並過濾字元。如果是常見的登入註冊這種的話,建議使用正則匹配的方式限制輸入內容。2 富文字編輯器漏洞,如果是在前端需要編輯器的地方,請關閉附件上傳,輸入內容進行過濾,需要檔案上傳的地方可以在後端使用 驗證。有些黑客...

從SQL注入到進入伺服器

攻擊機ip 192.168.1.3 靶機ip 192.168.1.6 首先,我們使用dirb命令和nmap進行掃瞄發現了以該ip為url的 仔細搜尋該頁面發現個admin欄,點選發現了乙個登陸頁面 然後我們使用owasp zap掃瞄器掃瞄該 那麼我們開始掃瞄這個 吧!發現如下漏洞 既然存在sql注入...

Nginx與伺服器集群

一 集群 集 合在一起 放在一起 群 一堆 很多 伺服器架構集群 分布式伺服器架構 多台伺服器組成的響應大併發 高資料量訪問的架構體系。特點 1.1成本高 1.2降低單台伺服器的壓力,使用流量平均分配到多台伺服器。1.3使 服務架構更加安全穩定。伺服器概念 提供某種或者多種服務 功能 的機器 計算機...