nginx lua防火墻防SQL注入配置
一、防火墻配置
二、下載安裝文件
1. 下載程序
cd /opt wget https://github.com/LuaJIT/LuaJIT/archive/refs/tags/v2.0.5.tar.gz -O luajit-v2.0.5.tar.gz wget https://github.com/simpl/ngx_devel_kit/archive/v0.3.4.tar.gz -O ngx_devel_kit-0.3.4.tar.gz wget https://github.com/openresty/lua-nginx-module/archive/v0.10.9rc7.tar.gz -O lua-nginx-module-0.10.9rc7.tar.gz wget http://nginx.org/download/nginx-1.19.3.tar.gz -O nginx-1.19.3.tar.gz
2. 逐項解壓
tar -xzvf luajit-v2.0.5.tar.gz tar -xzvf ngx_devel_kit-0.3.4.tar.gz tar -xzvf lua-nginx-module-0.10.9rc7.tar.gz tar -xzvf nginx-1.19.3.tar.gz
三、安裝
1. 安裝lua環(huán)境
cd /opt/LuaJIT-2.0.5/ make && make install export LUAJIT_LIB=/usr/local/lib export LUAJIT_INC=/usr/local/include/luajit-2.0 echo "/usr/local/lib" >> /etc/ld.so.conf ldconfig
2. 安裝nginx,需要包含nginx lua模塊
cd /opt/nginx-1.19.3 ./configure --prefix=/usr/local/nginx \ --add-module=/opt/ngx_devel_kit-0.3.4 \ --add-module=/opt/lua-nginx-module-0.10.9rc7 make && make install
四、配置lua防火墻
1. 下載lua防火墻代碼
cd /usr/local/nginx/conf git clone https://github.com/loveshell/ngx_lua_waf.git
2. 加載lua防火墻配置,vi /usr/local/nginx/conf/nginx.conf
,http中加入以下紅色部分配置
http { # 其它配置 ... lua_package_path "/usr/local/nginx/conf/ngx_lua_waf/?.lua"; lua_shared_dict limit 10m; init_by_lua_file /usr/local/nginx/conf/ngx_lua_waf/init.lua; access_by_lua_file /usr/local/nginx/conf/ngx_lua_waf/waf.lua; }
3. 修改防火墻配置RulePath值,vi /usr/local/nginx/conf/ngx_lua_waf/config.lua
# 默認(rèn)值是`/usr/local/nginx/conf/waf/wafconf/` /waf 改為 /ngx_lua_waf RulePath = "/usr/local/nginx/conf/ngx_lua_waf/wafconf/"
4. 啟動nginx
/usr/local/nginx/sbin/nginx
五、測試
1. 測試url中的關(guān)鍵字,出現(xiàn)攔截頁面表示配置成功, 攔截參數(shù)在/usr/local/nginx/conf/ngx_lua_waf/wafconf/url
文件
2. 測試post關(guān)鍵字
六、準(zhǔn)備演示環(huán)境
1. 前端演示頁面
<html> <head> <title>登陸</title> <meta charset="utf-8"> </head> <body> <div> 用戶名:<input type="text" name="user" id="txtUser"><br> 密碼:<input type="password" name="pwd" id="txtPassword"><br> <input type="button" onclick="login('login')" value="登陸"> <br> <div id="divMsg"></div> <script> function login(action) { var httpRequest = new XMLHttpRequest() httpRequest.onreadystatechange = function () { if (httpRequest.readyState == 4) { document.getElementById("divMsg").innerText = httpRequest.responseText } } httpRequest.open('POST', `/api/${action}`, true) httpRequest.setRequestHeader( 'Content-type', 'application/x-www-form-urlencoded' ) var user = document.getElementById("txtUser").value var pwd = document.getElementById("txtPassword").value var str = `username=${user}&password=${pwd}` httpRequest.send(str) } </script> </div> </body> </html>
2. 服務(wù)端演示代碼,模擬SQL注入
@Autowired JdbcTemplate jdbcTemplate; /** * 拼sql查詢 * * @param user * @return */ @PostMapping("/login") public String login(User user) { String sql = "select * from sys_user where user_name = '" + user.getUsername() + "' and pass_word = '" + user.getPassword() + "'"; System.out.println("SQL:"); System.out.println(sql); List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql); System.out.println(maps.size()); if (maps.size() > 0) { return"login success"; } else { return"login fail"; } }
3. nginx代理設(shè)置
location /api/ { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://192.168.1.18:8093/; }
4. 配置攔截參數(shù)(lua防火墻通過檢測post表單中的關(guān)鍵字實現(xiàn)攔截)。
# 設(shè)置SQL注入的關(guān)鍵參數(shù) echo "'\s+or\s+" >> /usr/local/nginx/conf/ngx_lua_waf/wafconf/post # 重新加載,使配置生效 /usr/local/nginx/sbin/nginx -s reload
七、效果演示
1. 正常登陸
2. 注入成功,在配置post攔截參數(shù)以前的效果
3. 注入被攔截,在配置post攔截參數(shù)以后的效果
到此這篇關(guān)于nginx lua防火墻防SQL注入配置的文章就介紹到這了,更多相關(guān)Nginx lua防止SQL注入內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
angular6+springboot實現(xiàn)前后分離nginx配置
這篇文章主要介紹了angular6+springboot實現(xiàn)前后分離nginx配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-06-06Nginx可視化管理軟件NginxProxyManager的使用
NginxProxyManager是一款基于Nginx的開源可視化管理工具,支持通過WebUI簡易管理Nginx服務(wù)器,支持DockerCompose快速部署在Linux、Windows、macOS上,提供SSL證書獲取、多代理管理等功能,感興趣的可以了解一下2024-11-11Nginx設(shè)置日志打印post請求參數(shù)的方法
這篇文章主要介紹了Nginx設(shè)置日志打印post請求參數(shù)的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11使用nginx如何實現(xiàn)請求轉(zhuǎn)發(fā)的功能
文章介紹了如何配置Nginx作為反向代理服務(wù)器,實現(xiàn)請求轉(zhuǎn)發(fā)和負(fù)載均衡,并進行了靜態(tài)和動態(tài)內(nèi)容分離,主要步驟包括修改Nginx默認(rèn)端口、配置轉(zhuǎn)發(fā)規(guī)則和修改配置文件2024-12-12Linux中Nginx反向代理如何實現(xiàn)不同路徑訪問不同的頁面
這篇文章主要介紹了Linux中Nginx反向代理如何實現(xiàn)不同路徑訪問不同的頁面方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12Nginx實現(xiàn)集群的負(fù)載均衡配置過程解析
這篇文章主要為大家詳細(xì)介紹了Nginx實現(xiàn)集群的負(fù)載均衡配置過程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02