Nginx作為一款高效能的Web伺服器和反向代理伺服器,廣受網站架構師的青睞。但在使用Nginx時,我們也需要注意安全方面的問題,特別是在處理URL。
由於Nginx的彈性,如果我們不採取一些URL安全性策略,就可能受到以下攻擊:
- SQL注入
- XSS攻擊
- 非法文件下載
- CSRF攻擊
- 非法請求存取等
#本文將介紹Nginx URL安全策略編寫的指南。
一. 前置條件
在編寫Nginx URL安全策略之前,需要對以下知識點掌握:
- 正規表示式
- Nginx設定檔語法
- HTTP協定基礎
二. 輸入過濾
Nginx可使用http請求頭偵測,防止惡意Http請求。具體實作方式是新增類似如下配置到Nginx設定檔:
if ($http_user_agent ~* "some evil expression") { return 403; }
或使用Nginx內建的防火牆模組進行輸入過濾,如下:
# block ip sends more than 100 requests per 5 seconds limit_conn_zone $binary_remote_addr zone=one:10m; limit_req_zone $binary_remote_addr zone=two:10m rate=1r/s; server { location / { limit_conn one 10; limit_req zone=two burst=5 nodelay; } }
該範例做瞭如下的事情:
- 首先定義了兩個zone,也就是可以儲存狀態資訊的記憶體區域。 (這也意味著如果有很多的訪問,這種防護的成本可能會比較高)
- 如果同一個IP位址在 5 秒內發送了多於 100 個HTTP請求,則進行屏蔽。
- 如果同一個IP位址在 1 秒內發送了多於 5 次HTTP請求,則進行封鎖。
三. 防SQL注入
在實際開發中,避免SQL注入是必須的。為了防止SQL注入攻擊,我們可以如下配置:
location ~* (.php|.asp|.ashx)/?$ { if ($args ~* "select.*from") { return 403; } }
該範例用到了Nginx內建的if模組,防止攻擊者使用select語句從資料庫中獲取數據,如果有這種情況,返回403禁止訪問。
四. 防XSS攻擊
針對XSS攻擊,我們可以加強對輸入的偵測。如果偵測到可能的XSS攻擊,可以將連線重新導向到一個安全的URL,或傳回錯誤訊息。
if ($args ~* "<script.*>") { return 403; }
此範例採用了Nginx內建的if模組,偵測URL中是否有嵌套了script標籤的內容。
五. 防CSRF攻擊
在使用Nginx時,為了防止CSRF攻擊,需要禁止外部網站的請求。例如,可以增加以下配置:
location / { if ($http_referer !~ "^https?://$host/") { return 403; } }
該範例使用Nginx內建的if模組,限制只能接收$host網站發送的請求,如果來自其他網站的請求,Nginx會回傳403。
六. 防文件下載漏洞
為了防止存取不正當的文件,如私人文件、腳本、設定檔等,請使用以下策略:
location ~* .(xls|doc|pdf)$ { valid_referers none blocked server_names; if ($invalid_referer) { return 401; } }
此範例使用Nginx內建的valid_referers模組,當發現請求來自沒有經過授權的網站時,會傳回401。
七. 禁止一些URL存取
在實際專案中,有些URL可以被攻擊者利用,例如admin.php、login.php等。我們可以直接禁止它們的訪問。
location ~ /(admin|login).php { deny all; }
此範例的配置,禁止了存取以admin.php和login.php結尾的URL。
八.完整範例
最後,根據以上的配置,我們可以得到以下的完整範例:
server { listen 80; server_name yourdomain.com; # 设置过滤规则 location / { # 禁止非法请求 limit_conn_zone $binary_remote_addr zone=one:10m; limit_req_zone $binary_remote_addr zone=two:10m rate=1r/s; limit_conn one 10; limit_req zone=two burst=5 nodelay; # 防止XSS攻击 if ($args ~* "<script.*>") { return 403; } # 防止SQL注入 if ($args ~* "select.*from") { return 403; } # 禁止admin和login的访问 location ~ /(admin|login).php { deny all; } } # 防止文件下载漏洞 location ~* .(xls|doc|pdf)$ { valid_referers none blocked server_names; if ($invalid_referer) { return 401; } } }
以上就是Nginx URL安全性原則所寫的指南。希望可以為你的Nginx配置提供一些幫助,提高系統的安全性。
以上是Nginx URL安全性原則編寫指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

NGINX適合處理高並發請求,Apache適合需要復雜配置和功能擴展的場景。 1.NGINX採用事件驅動、非阻塞架構,適用於高並發環境。 2.Apache採用進程或線程模型,提供豐富的模塊生態系統,適合複雜配置需求。

NGINX可用於提升網站性能、安全性和可擴展性。 1)作為反向代理和負載均衡器,NGINX可優化後端服務和分擔流量。 2)通過事件驅動和異步架構,NGINX高效處理高並發連接。 3)配置文件允許靈活定義規則,如靜態文件服務和負載均衡。 4)優化建議包括啟用Gzip壓縮、使用緩存和調整worker進程。

NGINXUnit支持多種編程語言,通過模塊化設計實現。 1.加載語言模塊:根據配置文件加載相應模塊。 2.應用啟動:調用語言運行時執行應用代碼。 3.請求處理:將請求轉發給應用實例。 4.響應返回:將處理後的響應返回給客戶端。

NGINX和Apache各有優劣,適合不同場景。 1.NGINX適合高並發和低資源消耗場景。 2.Apache適合需要復雜配置和豐富模塊的場景。通過比較它們的核心特性、性能差異和最佳實踐,可以幫助你選擇最適合需求的服務器軟件。

確認 Nginx 是否啟動的方法:1. 使用命令行:systemctl status nginx(Linux/Unix)、netstat -ano | findstr 80(Windows);2. 檢查端口 80 是否開放;3. 查看系統日誌中 Nginx 啟動消息;4. 使用第三方工具,如 Nagios、Zabbix、Icinga。

要關閉 Nginx 服務,請按以下步驟操作:確定安裝類型:Red Hat/CentOS(systemctl status nginx)或 Debian/Ubuntu(service nginx status)停止服務:Red Hat/CentOS(systemctl stop nginx)或 Debian/Ubuntu(service nginx stop)禁用自動啟動(可選):Red Hat/CentOS(systemctl disable nginx)或 Debian/Ubuntu(syst

如何在 Windows 中配置 Nginx?安裝 Nginx 並創建虛擬主機配置。修改主配置文件並包含虛擬主機配置。啟動或重新加載 Nginx。測試配置並查看網站。選擇性啟用 SSL 並配置 SSL 證書。選擇性設置防火牆允許 80 和 443 端口流量。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

SublimeText3漢化版
中文版,非常好用

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具