最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Nginx+lua實(shí)現(xiàn)簡(jiǎn)單的XSS攻擊攔截

 更新時(shí)間:2024年01月30日 08:47:46   作者:銀空飛羽  
WAF即web應(yīng)用防火墻,Nginx是一個(gè)主流的代理服務(wù),除了本身的Nginx日志,作為用戶(hù)肯定也支持對(duì)請(qǐng)求信息進(jìn)行操作,?很多都是通過(guò)在代理服務(wù)器上掛載規(guī)則特征,實(shí)現(xiàn)軟件層面的軟WAF進(jìn)行WEB防護(hù),本文主要給大家介紹了Nginx+Lua實(shí)現(xiàn)一個(gè)簡(jiǎn)單的XSS攻擊攔截,需要的朋友可以參考下

Lua

關(guān)于Lua,它是一個(gè)腳本語(yǔ)言,因?yàn)樗鼧O其輕量級(jí),所以一般廣泛應(yīng)用于游戲腳本等高性能的領(lǐng)域。Nginx也有專(zhuān)門(mén)對(duì)Lua腳本支持的模塊,后續(xù)的軟WAF實(shí)現(xiàn)主要就是依賴(lài)于Nginx掛載Lua腳本,關(guān)于Lua的語(yǔ)法比較簡(jiǎn)單,可以參考上述文檔,不過(guò)多贅述。

Nginx的Lua支持

Nginx本身就是模塊化的,可以針對(duì)模塊進(jìn)行增加修改。那么對(duì)于lua的能力支持,主要就是 ngx_http_lua_module 模塊來(lái)提供的。

location /lua {
	default_type "text/html";
	content_by_lua 'ngx.say("<h1>hello world</h1>")';
}

如果發(fā)現(xiàn)不能成功執(zhí)行,這里便用如下命令,手動(dòng)安裝一下擴(kuò)展再試試

sudo apt update
sudo apt install nginx-extras

XSS檢測(cè)lua腳本

這里我寫(xiě)了一個(gè)簡(jiǎn)單XSS檢測(cè),直接上代碼

local function has_xss(payload)
    if payload and type(payload) == "string" then
        if string.find(payload, "<script>") or string.find(payload, "javascript:") or string.find(payload, "onerror=") then
            return true
        end
    end
    return false
end


ngx.req.read_body()
local args = ngx.req.get_uri_args()

for key, val in pairs(args) do
    if has_xss(val) then
        ngx.exit(ngx.HTTP_FORBIDDEN)
    end
end

可以看到,我寫(xiě)了一個(gè)xss的檢測(cè)函數(shù)has_xss,當(dāng)然規(guī)則比較簡(jiǎn)單。同時(shí)接下來(lái),用了ngx.req.read_body()函數(shù),當(dāng)你需要處理HTTP請(qǐng)求時(shí),必須優(yōu)先調(diào)用該函數(shù),隨后才可以獲取HTTP的請(qǐng)求數(shù)據(jù)。

這里調(diào)用過(guò)該函數(shù)后,我取到了uri的參數(shù)數(shù)據(jù),當(dāng)然也可以通過(guò)ngx.req.get_post_args()獲取post參數(shù),也可以通過(guò)ngx.req.get_body_data()來(lái)獲取請(qǐng)求數(shù)據(jù),更多的用法函數(shù)可以參考最上方的文檔進(jìn)行查詢(xún)。

最后就是循環(huán)遍歷參數(shù)并執(zhí)行has_xss進(jìn)行判斷,如果發(fā)現(xiàn)命中匹配字符,則返回FORBIDDEN也就是403狀態(tài)碼。

掛載Lua

這里我的lua腳本路徑為:/home/ssremex/nginx_lua/xss_check.lua

打開(kāi)nginx的配置文件 /etc/nginx/nginx.conf

http{
	...
  server {
    ...
		location / {
    	access_by_lua_file /home/ssremex/nginx_lua/xss_check.lua;
			try_files $uri $uri/ /index.html;
  	}
    ...
  
  }
  ...
}

通過(guò)access_by_lua_file來(lái)使lua腳本掛載到根路由下。

同時(shí),因?yàn)樵蹅兌x了攔截返回狀態(tài)碼403,所以希望攔截的時(shí)候能夠返回這個(gè)頁(yè)面,先簡(jiǎn)單寫(xiě)個(gè)403頁(yè)面 attack_403.html,

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>WARNNING</title>
</head>
<body>
<h1>發(fā)現(xiàn)攻擊,已禁止</h1>
</body>
</html>

在nginx.conf中配置上error_page,因?yàn)橹拔乙呀?jīng)設(shè)定了web的全局跟路徑root,所以我直接將attack_403.html文件放到根路徑下也就是home_demo下,路徑為/home/ssremex/home_demo/attack_403.html

nginx相關(guān)配置如下

http {
	...
    server {
            listen 8088; # 更換成自己像監(jiān)聽(tīng)的端口
            server_name 0.0.0.0;
            root /home/ssremex/home_demo;

            error_page 403 /attack_403;
            location = /attack_403 { 
                    try_files $uri $uri/ /attack_403.html;
                    internal;
            }

            location / {
                    access_by_lua_file /home/ssremex/nginx_lua/xss_check.lua;
                    try_files $uri $uri/ /index.html;
            }
            location /lua {
                    default_type "text/html";
                    content_by_lua 'ngx.say("<h1>hello world</h1>")';
            }
    }
	...
}

查看效果

本次我們實(shí)現(xiàn)的是GET請(qǐng)求的xss檢測(cè)

nginx -t

通過(guò)該命令,測(cè)試配置文件沒(méi)啥問(wèn)題。

隨后,重啟nginx服務(wù)

systemctl restart nginx

訪(fǎng)問(wèn)WEB服務(wù)

一切正常,添加xss參數(shù):http://ip:port/?a=%3Cscript%3E

可以看到直接跳轉(zhuǎn)到403界面,完美實(shí)現(xiàn)一個(gè)簡(jiǎn)單的攔截。

到此這篇關(guān)于基于Nginx+lua實(shí)現(xiàn)XSS攻擊攔截的文章就介紹到這了,更多相關(guān)Nginx+lua實(shí)現(xiàn)XSS攻擊攔截內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx使用反向代理實(shí)現(xiàn)負(fù)載均衡過(guò)程解析

    Nginx使用反向代理實(shí)現(xiàn)負(fù)載均衡過(guò)程解析

    這篇文章主要介紹了Nginx使用反向代理實(shí)現(xiàn)負(fù)載均衡過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Windows下Nginx的啟動(dòng)停止等基本操作命令詳解

    Windows下Nginx的啟動(dòng)停止等基本操作命令詳解

    在Windows下使用Nginx,我們需要掌握一些基本的操作命令,今天為大家分享幾個(gè)Windows下操作Nginx的基本命令
    2018-10-10
  • 詳解Nginx 利用代理轉(zhuǎn)發(fā)請(qǐng)求示例

    詳解Nginx 利用代理轉(zhuǎn)發(fā)請(qǐng)求示例

    這篇文章主要介紹了詳解Nginx 利用代理轉(zhuǎn)發(fā)請(qǐng)求示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • Nginx常用技巧使用實(shí)例匯總

    Nginx常用技巧使用實(shí)例匯總

    這篇文章主要介紹了Nginx常用技巧使用實(shí)例匯總,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Nginx中l(wèi)ocation實(shí)現(xiàn)多條件匹配的方法詳解

    Nginx中l(wèi)ocation實(shí)現(xiàn)多條件匹配的方法詳解

    在 Nginx 中,location 指令用于匹配請(qǐng)求的 URI,雖然 location 本身是基于單一匹配規(guī)則的,但可以通過(guò)多種方式實(shí)現(xiàn)多個(gè)條件的匹配邏輯,下面小編就來(lái)為大家介紹一下具體實(shí)現(xiàn)方法吧
    2025-03-03
  • Nginx狀態(tài)監(jiān)控以及日志分析詳解

    Nginx狀態(tài)監(jiān)控以及日志分析詳解

    這篇文章主要給大家介紹了關(guān)于Nginx狀態(tài)監(jiān)控以及日志分析的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Nginx具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • nginx中return和rewrite指令同時(shí)存在先執(zhí)行順序哪個(gè)

    nginx中return和rewrite指令同時(shí)存在先執(zhí)行順序哪個(gè)

    在Nginx配置中,當(dāng)return和rewrite指令同時(shí)存在,其執(zhí)行順序取決于配置的具體場(chǎng)景,這篇文章主要介紹了nginx中return和rewrite指令同時(shí)存在先執(zhí)行順序哪個(gè),文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • nginx容器配置文件獨(dú)立的實(shí)現(xiàn)

    nginx容器配置文件獨(dú)立的實(shí)現(xiàn)

    本文主要介紹了nginx容器配置文件獨(dú)立,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 詳解Nginx 靜態(tài)文件服務(wù)配置及優(yōu)化

    詳解Nginx 靜態(tài)文件服務(wù)配置及優(yōu)化

    這篇文章主要介紹了Nginx 靜態(tài)文件服務(wù)配置及優(yōu)化,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05
  • Nginx 壓縮(gzip、gunzip、gzip_static、send_file)的實(shí)現(xiàn)

    Nginx 壓縮(gzip、gunzip、gzip_static、send_file)的實(shí)現(xiàn)

    在Web應(yīng)用開(kāi)發(fā)中,優(yōu)化網(wǎng)站速度是一個(gè)非常重要的工作,本文主要介紹了Nginx 壓縮(gzip、gunzip、gzip_static、send_file)的實(shí)現(xiàn),感興趣的可以了解一下
    2024-09-09

最新評(píng)論

柳州市| 高邮市| 迭部县| 恩平市| 兴仁县| 红原县| 揭西县| 清远市| 卫辉市| 永定县| 开鲁县| 高清| 蛟河市| 隆林| 安宁市| 湘潭县| 桦甸市| 海原县| 冷水江市| 全椒县| 绥芬河市| 武安市| 梓潼县| 乾安县| 边坝县| 抚远县| 定边县| 三门县| 嘉义市| 南澳县| 板桥市| 扎兰屯市| 洛川县| 浮梁县| 乡宁县| 东方市| 任丘市| 肇庆市| 贵定县| 格尔木市| 乐平市|