1. 程式人生 > >nginx ql語句過濾、檔案注入禁止、溢位攻擊過濾、spam欄位過濾、user-agents頭過濾

nginx ql語句過濾、檔案注入禁止、溢位攻擊過濾、spam欄位過濾、user-agents頭過濾

上一篇——nginx伺服器防sql注入與溢位(一) 列出了常用的進行注入與溢位的各種防止方法。但是上文列出的是普遍的方法,針對各自現網應用的不同,使用上也需要進行相應的調整。下面列出一下我現網中的防止方法。

一、自動防護

if ($request_uri ~* \.(htm|do)\?(.*)$) {
           set $req $2;
        }
        if ($req ~* "(cost\()|(concat\()") {
                return 503;
        }
        if ($req ~* "union[+|(%20)]") {
                return 503;
        }
        if ($req ~* "and[+|(%20)]") {
                return 503;
        }
        if ($req ~* "select[+|(%20)]") {
                return 503;
        }

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傳送。

#!/bin/bash
cd /tmp
/bin/rm -rf nginxanalay.tar.gz
cd /logs/nginx
egrep  '(sqlmap|select|"order by")'*|egrep -v '(Googlebot|Baiduspider|Sosospider|stepselect)'|awk -F 'HTTP/1.1"''{print $1}'>/tmp/nginxanalay.log
cd /tmp
tar czvf nginxanalay.tar.gz nginxanalay
.log /usr/bin/sendEmail -f [email protected].com -t 收件人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

相關推薦

nginx ql語句過濾檔案注入禁止溢位攻擊過濾spam過濾user-agents過濾

上一篇——nginx伺服器防sql注入與溢位(一) 列出了常用的進行注入與溢位的各種防止方法。但是上文列出的是普遍的方法,針對各自現網應用的不同,使用上也需要進行相應的調整。下面列出一下我現網中的防止方法。 一、自動防護 if ($request_uri ~* \.(htm|do)\?(.*)$) {

mysqloraclesqlserver根據對應的表查詢表中的所有名稱型別別名長度等資訊

SELECT  t.COLUMN_NAME AS NAME,  (   CASE   WHEN t.IS_NULLABLE = 'YES' THEN    '1'   ELSE    '0'   END  ) AS isNull,  (t.ORDINAL_POSITION * 10) AS sort,  is

搭建 spring boot (二) ---- 配置fastjson,實體格式化過濾解決中文亂碼

新增第一個實體並返回json到前端 1、新增第一個實體類Demo.java,設定簡單的屬性id和name並生成getter和setter方法 2、新增介面。在ctroller中新增返回demo的介面 3、重啟應用並訪問介面。可見返回的資料已經是json格式了

django--orm關係(ForeignKeyOneToOneFieldManyToManyField)詳解

django中的關係欄位 1、ForeignKey欄位,即外來鍵欄位,對應一對多的情況,列如:一本書對應一個出版社,一個出版社可對應多本書。 2、ManyToManyFiled欄位,即多對多欄位,對應資料庫中一個數據相互可以對應多條,列如:一本書可以有多個作者,一個作者可以有多本書 3、OneToOneFi

資料庫工作筆記010---Mysql中用SQL增加刪除,修改型別註釋,調整順序總結

  JAVA技術交流QQ群:170933152   Mysql中用SQL增加、刪除欄位,修改欄位名、欄位型別、註釋,調整欄位順序總結   在網站重構中,通常會進行資料結構的修改,所以新增,刪除,增加mysql表的欄位是難免的,有時為了方便,還會增加

如何修改帶索引的的長度,檢視刪除索引,修改屬性建立索引!

需要重新建立索引,因為長度不同會認為是兩個不同的所索引。 建立和刪除索引 索引的建立可以在CREATE TABLE語句中進行,也可以單獨用CREATE INDEX或ALTER TABLE來給表增加索引。刪除索引可以利用ALTER TABLE或DROP INDEX語句來實現。 (1)使用ALTER T

java生成mysql資料庫建表語句型別註釋,可實現不用mysqldump備份資料庫

使用 mysqldump 備份資料庫也是可行的,因為每次備份的時候都需要mysqldump這個檔案, 我在windows備份時沒問題,但是放到linux上面時,centos系統死活不認這個檔案,但又不想裝mysql,一氣之下自己研究了個不需要mysqldump就可以備份的程式, 如果看了以下程式

MFC獲取SqlServer資料庫所有表記錄資料

程式碼如下過程其實不是每一步都有,但是主要功能都在! //1、連線資料庫類 BOOL CSqlDlg::Ado(CString strConn) { ::CoInitialize(NULL); // 初始化OLE/COM庫環境 try { m_pConn.CreateInstan

利用arcpy實現arcgis中欄自動編號(pycharm匯入arcpy站點包,建立更新與寫值)

一、問題來源 今天看到群裡有一個小夥伴,要實現這樣的一個功能,來看一下他的提問: 問下各位大神,如果圖層裡面有2000個小班,我需要將這2000小班在屬性表裡面編號依次為1 2 3 4……1998 1999 2000該怎麼操作呢 。 於是下面有人說可以對欄位的FID操作

mysql查詢不為空的方法總結

1、不為空 Select   *   From   table Where id<>'' Select   *   From   table Where id!='' 2、為空 Select   *   From   table Where id='' Sele

postgresql獲取表結構,表名表註釋型別及長度和註釋(轉載)

轉載地址:https://blog.csdn.net/weixin_38924323/article/details/80982760 場景描述:navicate 將postgresql表結構匯出到Excel。 1、查詢表名和表註釋 select relna

記錄:Mysql 修改長度修改列名新增列修改自增主鍵起始值

以下轉自https://www.cnblogs.com/yangjinwang/p/5918906.html alter table 表名 modify column 欄位名 型別; 例如 資料庫中user表 name欄位是varchar(30) 可以用 alter tab

JPA 通過註解自動生成表 新增 型別註釋

@Table - 對映表名 @Id - 主鍵 @GeneratedValue(strategy=GenerationType.IDENTITY) - 自動遞增生成 @Column(name = “dict_name”,columnDefinition=”varchar(100) COMMENT ‘字

navicat mysql查資料庫中表名表數量,數量(持續更新中)

1.查資料庫中表數量 (紅色標記的是常用到的重要的表結構資訊表) mysql> use information_schema;Database changedmysql> show tables;+-------------------------------

Oracle 查詢庫中所有表名名說明,查詢表的資料條數表名中文表名

查詢所有表名: select t.table_name from user_tables t; 查詢所有欄位名: select t.column_name from user_col_comments t; 查詢指定表的所有欄位名: select t.column_nam

iOS-資料返回null導致的程式crash問題解決

在iOS開發過程中經常需要與伺服器進行資料處理,但是在資料接通過程中會出現:null “”等問題導致莫名其妙的崩潰。相信你一定會寫各種判斷來處理這些異常,甚至你還會一個一個介面的去改,折讓我們實在是心灰意冷。 再者可能你會寫個分類 調它。這樣也會讓你非常的苦惱

類和物件(=變數方法=函式方法過載靜態成員屬性建構函式)

一、類 類包括:欄位(用來儲存資料)、屬性(用來保護欄位,屬性的本質是兩個函式get和set)、建構函式(用來初始化物件,給物件的每一個屬性賦值)、函式(描述物件的行為)、索引器(以索引的方式去訪問物件)。 一個類都可以包含兩種成員:欄位(Field)與方法(Method)

c#+arcgisengine 對屬性表建立並賦值(或對已有項值進行更改)

            while (pFeature != null)            {                string[] fldvalue = new string[pFields.FieldCount];                for (int i = 0; i <

Oracle:表名constraint名的長度有限制

說明:複製表(只複製結構,源表名:a 新表名:b)     SQL: select * into b from a where 1<>1 feedom.net   說明:拷貝表(拷貝資料,源表名:a 目標表名:b)   中國網管聯盟www_bitscn_com   SQL: insert

關於odoo中__mainfest__.py含義功能詳解

mainfest.py 注:本文摘自《odoo10.0官方文件》 翻譯:李海振 清單檔案用於將python包宣告為Odoo模組並指定模組元資料。 它是一個名為的檔案__manifest__.py,包含一個Python字典,其中每個鍵指定模組元資料。 可用的清