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

nginx利用lua語言實現(xiàn)軟waf的示例代碼

 更新時間:2024年03月04日 11:43:36   作者:475.35  
這篇文章主要介紹了nginx利用lua語言實現(xiàn)軟waf,文中通過代碼示例和圖文結(jié)合的方式給大家講解的非常詳細,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下

首先下載nginx的安裝包:

wget http://nginx.org/download/nginx-1.14.0.tar.gz

這里下載的是nginx1.14的包,感覺安裝包太老的話可以去官網(wǎng)下載新的版本:

官網(wǎng)地址:http://nginx.org/

但是我這里測試使用的不是nginx的安裝包,而是使用的淘寶開發(fā)師提供的OpenResty;

其官方網(wǎng)站OpenResty® - Open source我們讀起來是非常的方便。OpenResty是一個基于Nginx與 Lua 的高性能 Web 平臺,其內(nèi)部集成了大量精良的 Lua 庫、第三方模塊以及大多數(shù)的依賴項。

用于方便地搭建能夠處理超高并發(fā)、擴展性極高的動態(tài) Web 應(yīng)用、Web 服務(wù)和動態(tài)網(wǎng)關(guān)。所以本身OpenResty內(nèi)部就已經(jīng)集成了Nginx和Lua,所以我們使用起來會更加方便。

下載OpenResty:

wget https://openresty.org/download/openresty-1.19.3.2.tar.gz

解壓縮:

tar -zxvf openresty-1.19.3.2.tar.gz && cd openresty-1.19.3.2

編譯安裝:

./configure && make && make install

進入OpenResty的目錄,找到nginx:

cd /usr/local/openresty/nginx/

在conf目錄下的nginx.conf添加如下內(nèi)容:

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

通過瀏覽器訪問測試:

測試nginx沒問題后,就開始本次實驗:

利用XSS檢測lua腳本

這里我寫了一個簡單XSS檢測,直接上代碼

 
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

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

這里調(diào)用過該函數(shù)后,我取到了uri的參數(shù)數(shù)據(jù)。當(dāng)然也可以通過ngx.req.get_post_args()或者ngx.req.get_body_data()來分別獲取post參數(shù)和請求數(shù)據(jù)。除此之外,更多的用法函數(shù)可以參考最上方的文檔進行查詢。

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

掛載Lua

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

打開nginx的配置文件:

/usr/local/openresty/nginx/conf/nginx.conf

在配置文件中添加location:

            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>")';
            }

這里將默認的發(fā)布文件目錄修改為/home/gsl,因為在這里我還有兩個html文件;

接下來那就是要編寫html文件了:

第一個是發(fā)現(xiàn)uri不正確/檢測到有問題的,需要提醒被攻擊,這個html文件的路徑為:

/home/gsl/attack_403.html

html代碼如下:

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

另外一個就是如果檢測到正確就訪問index文件:

路徑為:/home/gsl/index.html

html代碼如下(我這里為了測試找了一個簡單的代替):

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>我的網(wǎng)頁</title>
</head>
<body>
    <h1>這是標(biāo)題</h1>
    <p>這是段落。</p>
 
    <!-- 在此處添加其他內(nèi)容 -->
 
</body>
</html>

nginx.conf的配置文件也像上邊一樣配置完成,那么這時就可以使用Nginx命令來檢測一下nginx的語法是否正確,并且重新加載一下配置文件:

我這里是編譯安裝的nginx,并且也沒有將nginx的可執(zhí)行文件配置在/usr/sbin(已經(jīng)配置的環(huán)境變量)目錄下,所以我需要進入:/usr/local/openresty/nginx/sbin下執(zhí)行命令

./nginx -t

nginx -s reload

然后正常訪問一下:

添加xss參數(shù)模擬一下錯誤:

http://ip:port/?a=%3Cscript%3E

已經(jīng)被檢測到;

OK,本次實驗結(jié)束;

以上就是nginx利用lua語言實現(xiàn)軟waf的示例代碼的詳細內(nèi)容,更多關(guān)于nginx lua實現(xiàn)軟waf的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • nginx常見問題整理和解決辦法

    nginx常見問題整理和解決辦法

    給大家詳細整理了nginx常見的問題以及對應(yīng)問題的處理辦法,有需要的朋友參考一下吧。
    2017-12-12
  • CentOS6.6 安裝 Tengine 筆記

    CentOS6.6 安裝 Tengine 筆記

    這篇文章主要介紹了CentOS6.6 安裝 Tengine 筆記,本文講解了安裝必要的編譯環(huán)境好、安裝需要的組件、安裝Tengine等步驟,需要的朋友可以參考下
    2015-03-03
  • 一文詳解如何高效查找與管理Nginx進程

    一文詳解如何高效查找與管理Nginx進程

    在Linux系統(tǒng)中,Nginx是一個非常流行的Web服務(wù)器和反向代理服務(wù)器,要查找和管理Nginx進程,你可以使用多種命令行工具和技巧,以下是一些常用的方法,需要的朋友可以參考下
    2025-08-08
  • Nginx 基本使用和高級用法示例詳解

    Nginx 基本使用和高級用法示例詳解

    Nginx是一個高性能的 HTTP 和反向代理服務(wù)器,具有占用內(nèi)存少、并發(fā)能力強等特點,廣泛應(yīng)用于 Web 服務(wù)、負載均衡、靜態(tài)資源處理和反向代理等場景,本文介紹Nginx 基本使用和高級用法,感興趣的朋友一起看看吧
    2025-10-10
  • nginx部署前端vue項目教程

    nginx部署前端vue項目教程

    要在Nginx上部署前端Vue項目,首先在Vue項目根目錄構(gòu)建,將構(gòu)建文件上傳至服務(wù)器,并在Nginx配置文件中配置publicPath為/,以確保靜態(tài)文件正確引用,接著編輯Nginx配置文件,設(shè)置相應(yīng)路徑和反向代理等配置,保存后重啟Nginx服務(wù)
    2025-09-09
  • Nginx指令add_header和proxy_set_header的區(qū)別及說明

    Nginx指令add_header和proxy_set_header的區(qū)別及說明

    這篇文章主要介紹了Nginx指令add_header和proxy_set_header的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • 一段萬能的nginx接口實現(xiàn)反向代理配置

    一段萬能的nginx接口實現(xiàn)反向代理配置

    這篇文章主要介紹了一段萬能的nginx接口實現(xiàn)反向代理配置,詳細的介紹了什么是反向代理及其接口反向代理的實現(xiàn),非常具有實用價值,需要的朋友可以參考下
    2018-10-10
  • Nginx配置請求頭攜帶原始請求信息的實現(xiàn)

    Nginx配置請求頭攜帶原始請求信息的實現(xiàn)

    本文主要介紹了Nginx配置請求頭攜帶原始請求信息的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12
  • Nginx自定義日志中時間格式的操作方法

    Nginx自定義日志中時間格式的操作方法

    工作需要對接內(nèi)部的日志中臺,對日志打印有固定的格式要求,為了使Nginx的access日志也能被采集,需要對日志格式進行自定義,這篇文章主要介紹了Nginx自定義日志中時間格式,需要的朋友可以參考下
    2023-11-11
  • nginx安裝以及配置的詳細過程記錄

    nginx安裝以及配置的詳細過程記錄

    Nginx (engine x) 是一個高性能的HTTP和反向代理服務(wù)器,也是一個IMAP/POP3/SMTP服務(wù)器,下面這篇文章主要給大家介紹了關(guān)于nginx安裝以及配置的詳細過程,文章將實現(xiàn)的過程介紹的非常詳細,需要的朋友可以參考下
    2021-09-09

最新評論

景洪市| 绿春县| 易门县| 石林| 鹿邑县| 临江市| 五大连池市| 仁寿县| 喀喇沁旗| 滨州市| 内黄县| 南部县| 武胜县| 华安县| 赞皇县| 醴陵市| 左权县| 晋州市| 奉节县| 客服| 横峰县| 密云县| 陆河县| 南陵县| 昌乐县| 天门市| 高州市| 石棉县| 理塘县| 枣阳市| 乐平市| 金华市| 乐安县| 栾城县| 洪雅县| 开原市| 高陵县| 军事| 苗栗市| 龙海市| 大连市|