在Nginx下安裝和配置完Naxsi之后,為了能夠使網(wǎng)站能夠區(qū)分非法行為和合法行為,需要管理員將合法行為列入白名單。管理員可以通過(guò)分析nginx的錯(cuò)誤日志手動(dòng)添加白名單規(guī)則,或者通過(guò)密集的自動(dòng)學(xué)習(xí)工具(nxapi或nxtool),這些工具將自動(dòng)生成有關(guān)網(wǎng)站行為的白名單規(guī)則。本文主要介紹白名單規(guī)則以及如何通過(guò)分析nginx錯(cuò)誤日志手動(dòng)添加白名單規(guī)則。
10年的昭化網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營(yíng)銷(xiāo)推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整昭化建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“昭化網(wǎng)站設(shè)計(jì)”,“昭化網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
naxsi核心規(guī)則文件naxsi_core.rules需要在nginx配置文件nginx.conf下的http部分導(dǎo)入,而naxsi白名單規(guī)則文件naxsi_whitelists.rules一般在nginx配置文件nginx.conf下的location部分導(dǎo)入,可放置在CheckRules語(yǔ)句之前。
location部分對(duì)應(yīng)的配置內(nèi)容如下。
為了區(qū)分Naxsi和Nginx的錯(cuò)誤日志,可以為Naxsi設(shè)置相應(yīng)的錯(cuò)誤日志目錄和文件名。在本文中,Naxsi對(duì)應(yīng)的錯(cuò)誤日志為foo.log。
如果服務(wù)器安裝的是Wordpress或者ruTorrent或者dokuwiki或者drupal等,可以直接在 naxsi-rules 找到Naxsi官方制作的白名單。如果都沒(méi)有找到適合的白名單,就只能自己去配置白名單了。
白名單規(guī)則的語(yǔ)法如下所示。然后介紹語(yǔ)法中的重要組成部分。
這部分指的是哪些攔截規(guī)則會(huì)進(jìn)入白名單。以下舉例進(jìn)行說(shuō)明。
wl:0 : 把所有攔截規(guī)則加入白名單
wl:42 : 把ID為42的攔截規(guī)則加入白名單
wl:42,41,43 : 把ID為42, 41 和 43的攔截規(guī)則加入白名單
wl:-42 : 把所有攔截規(guī)則加入白名單,除了ID為42的攔截規(guī)則
這部分指的是本條白名單的生效區(qū)域。區(qū)域有如下組成部分。
以下對(duì)靜態(tài)的白名單規(guī)則進(jìn)行舉例說(shuō)明。
已知攔截規(guī)則1000是過(guò)濾包含select|union|update|delete|insert|table|from|ascii|hex|unhex之類(lèi)SQL關(guān)鍵字的規(guī)則。
在本子規(guī)則中完全禁用攔截規(guī)則1000。因?yàn)闆](méi)有指定區(qū)域,所以全部加入白名單。
在全部GET參數(shù)名為foo的值中禁用攔截規(guī)則1000 (即不用1000規(guī)則檢查GET中參數(shù)名為foo中的值)。所以, * from a 不會(huì)被過(guò)濾。
在URL為/bar的GET請(qǐng)求中參數(shù)名為foo的值中禁用攔截規(guī)則1000。所以, * from a 不會(huì)被過(guò)濾。
在URL為/bar的GET請(qǐng)求中的參數(shù)禁用攔截規(guī)則1000。所以, * from a 不會(huì)被過(guò)濾。 也不會(huì)被過(guò)濾。
在全部GET請(qǐng)求中對(duì)所有參數(shù)名(只是名,不包含參數(shù)值)中禁用攔截規(guī)則1000。所以, 不會(huì)被過(guò)濾。但是, 會(huì)被過(guò)濾(因?yàn)閟elect屬于參數(shù)值,不在白名單范圍內(nèi))。
在URL為/bar的全部GET請(qǐng)求中對(duì)所有參數(shù)名(只是名,不包含參數(shù)值)中禁用攔截規(guī)則1000。所以, 不會(huì)被過(guò)濾。但是, 會(huì)被過(guò)濾(因?yàn)閟elect屬于參數(shù)值,不在白名單范圍內(nèi))。
在全部請(qǐng)求中對(duì)符合^/upload/(. ).(. )$正則規(guī)則的URL禁用全部攔截規(guī)則。所以, 不會(huì)被過(guò)濾 (原本會(huì)觸發(fā)1000攔截規(guī)則)。
以下對(duì)含正則表達(dá)式的白名單規(guī)則進(jìn)行舉例說(shuō)明。
在全部GET參數(shù)名含有meh的值中禁用攔截規(guī)則1000 (即不用1000規(guī)則檢查GET中參數(shù)名含有meh中的值)。所以, * from a 不會(huì)被過(guò)濾。
在全部GET參數(shù)名以meh開(kāi)始的值中禁用攔截規(guī)則1000 (即不用1000規(guī)則檢查GET中參數(shù)名以meh開(kāi)始的值)。所以, * from a 不會(huì)被過(guò)濾。
在全部GET參數(shù)名格式為“meh_數(shù)字”的值中禁用攔截規(guī)則1000 (即不用1000規(guī)則檢查GET中參數(shù)名格式為“meh_數(shù)字”的值)。所以, * from a 不會(huì)被過(guò)濾。
在URL以/foo開(kāi)始的GET請(qǐng)求中的參數(shù)禁用攔截規(guī)則1000。所以, * from a 不會(huì)被過(guò)濾。 也不會(huì)被過(guò)濾。
在URL以/foo開(kāi)始的GET請(qǐng)求中的以數(shù)字開(kāi)始命名的參數(shù)禁用攔截規(guī)則1000。所以, * from a 不會(huì)被過(guò)濾。 也不會(huì)被過(guò)濾。
以下對(duì)RAW_BODY的白名單規(guī)則進(jìn)行舉例說(shuō)明。以RAW_BODY為目標(biāo)的白名單規(guī)則的編寫(xiě)方式與任何其他BODY規(guī)則相同。
已知攔截規(guī)則4241是即便在學(xué)習(xí)模式下也要過(guò)濾RAW_BODT中包含字符串RANDOMTHINGS的規(guī)則。
在本子規(guī)則中,在URL為/的BODY中的內(nèi)容禁用攔截規(guī)則4241,意味著該目錄下的任意BODY內(nèi)容都不會(huì)被過(guò)濾。
以下對(duì)FILE_EXT的白名單規(guī)則進(jìn)行舉例說(shuō)明。
在本子規(guī)則中,在URL為/index.html的文件上傳部分禁用攔截規(guī)則1337,意味著可在該目錄下上傳任意文件。
以下對(duì)JSON的白名單規(guī)則進(jìn)行舉例說(shuō)明。
JSON可被當(dāng)作BODY, 以變量的形式表示文本內(nèi)容。在本子規(guī)則中,對(duì)POST的參數(shù)lol禁用攔截規(guī)則1302,即以下JSON內(nèi)容可以被通過(guò)。
以下為訪問(wèn) * from a的錯(cuò)誤日志記錄。
從zone0=ARGS可看出被過(guò)濾的區(qū)域是ARGS,從id0=1000可看出攔截規(guī)則的id是1000,從var_name0=foo可看出被過(guò)濾的變量為foo。因此可以編寫(xiě)如下白名單規(guī)則。
1. Naxsi Wiki
2. NGINX的WAF模塊-Naxsi 配置白名單
3. whitelists-bnf
4. matchzones-bnf
5. whitelists-examples
一、關(guān)閉wordpress自帶站內(nèi)搜索
php+mysql已經(jīng)廣泛應(yīng)用于各大網(wǎng)站,但sql注入問(wèn)題是都會(huì)存在的一大事實(shí),黑客就是利用sql注入做了許多壞事。wordpress網(wǎng)站使用人數(shù)也逐漸增高,在安全性上也是公認(rèn)的,回過(guò)頭來(lái)說(shuō)站內(nèi)搜索吧,別扯遠(yuǎn)了,高深的問(wèn)題當(dāng)下也消化不了。
一般來(lái)說(shuō)sql查詢(xún)?cè)蕉?,?duì)網(wǎng)站效率越差負(fù)載也很高,為了優(yōu)化wordpress怎么減少sql查詢(xún)呢?因?yàn)閣ordpress自帶的站內(nèi)搜索不單每次都進(jìn)行sql查詢(xún),而且查詢(xún)都是不是十分準(zhǔn)確的,所以可以換成百度或谷歌等這些開(kāi)放站內(nèi)搜索,來(lái)進(jìn)行wordpress優(yōu)化,還提高了用戶體驗(yàn)。
但如果有訪客通過(guò)"wordpress/?s=$key"這種方式,仍然可以使用wordpress自帶的站內(nèi)搜索,因此,下面就可以用這種方法完全關(guān)閉wordpress自帶的站內(nèi)搜索。方法很簡(jiǎn)單,只需在function.php中加入以下代碼即可。
function fb_filter_query( $query, $error = true ) {
if ( is_search() ) {
$query-is_search = false;
$query-query_vars[s] = false;
$query-query[s] = false;
if ( $error == true )
$query-is_404 = true;
}
}
add_action( 'parse_query', 'fb_filter_query' );
add_filter( 'get_search_form', create_function( '$a', "return null;" ) );
二、關(guān)閉wordpress對(duì)外請(qǐng)求
相信大家都發(fā)現(xiàn)了,瀏覽器狀態(tài)欄會(huì)有wordpress網(wǎng)站向其他網(wǎng)站的鏈接,這大大影響了wordpress站點(diǎn)的速度,為了優(yōu)化wordpress,可以在wp-config.php中插入以下代碼來(lái)屏蔽對(duì)外請(qǐng)求。
define('WP_HTTP_BLOCK_EXTERNAL', true);
到這里,相信大家就開(kāi)始懷疑影不影響收錄,其實(shí)完全可以設(shè)置wordpress對(duì)外請(qǐng)求白名單,將百度、google等ping地址添加上即可。代碼如下(以百度為例):
define('WP_ACCESSIBLE_HOSTS', 'ping.baidu點(diǎn)抗 ');
轉(zhuǎn)發(fā) 評(píng)論 0 瀏覽 5090
昵稱(chēng)(必填)
郵箱 (必填)
網(wǎng)址
解決方法如下
方法一: 將wp-includes文件夾下的kses.php中的2句話屏蔽掉即可,如
//add_action('init', 'kses_init'); //add_action('set_current_user', 'kses_init');
上面這種做法是去掉wordpress對(duì)所有標(biāo)簽的過(guò)濾,但將這些開(kāi)放給注冊(cè)用戶會(huì)存在潛在的隱患,不推薦使用!
方法二: 把自己想要不被過(guò)濾的標(biāo)簽添加到“不過(guò)濾的白名單中”!
具體操作: 在wp-includes文件夾下的kses.php中搜索 $allowedposttags,這是個(gè)不過(guò)濾標(biāo)簽組成的數(shù)組,里面所列即是不過(guò)濾的標(biāo)簽集合,假如你發(fā)表文章時(shí)帶有style、script兩組標(biāo)簽,又不想被不過(guò)濾,可在$allowedposttags中添加下面語(yǔ)句:
'style' = array(), 'script' = array()
將上面兩句加入 $allowedposttags的一維數(shù)組(即最外面那層array)中即可?。?/p>
添加全局變量$allowedposttags的值,添加你所需要啟用的標(biāo)簽。這種方法將只對(duì)提交的文章啟用標(biāo)簽。
如此修改,每次升級(jí)wp以后還需要驗(yàn)證代碼的有效性(代碼的結(jié)構(gòu)有可能變化),然后需要重新修改??偟脕?lái)說(shuō)原則是能使用插件就盡量不修改源代碼。
數(shù)據(jù)庫(kù)也是影響 WordPress 運(yùn)行速度重要的因素之一,頻繁調(diào)用、查詢(xún)數(shù)據(jù)庫(kù)會(huì)拖累網(wǎng)站整體的加載速度。今天大挖結(jié)合自己的實(shí)踐操作來(lái)
優(yōu)化一些 WordPress 數(shù)據(jù)庫(kù)不必要的查詢(xún)次數(shù)。希望可以幫助到大家有效提升博客的速度。
先給大家分享一段可以在wordpress主題底部顯示當(dāng)前運(yùn)行時(shí) WordPress 數(shù)據(jù)庫(kù)查詢(xún)次數(shù)和內(nèi)存使用情況的代碼:
1
2
3
4
5
6
7
8
9
10
//顯示數(shù)據(jù)庫(kù)查詢(xún)次數(shù)、查詢(xún)時(shí)間及內(nèi)存占用的代碼
function performance( $visible = false ) {
$stat = sprintf( '%d 次查詢(xún) 用時(shí) %.3f 秒, 耗費(fèi)了 %.2fMB 內(nèi)存',
get_num_queries(),
timer_stop( 0, 3 ),
memory_get_peak_usage() / 1024 / 1024
);
echo $visible ? $stat : "" ;
}
add_action( 'wp_footer', 'performance', 20 );
上面的代碼,直接放到主題function.php里即可。
優(yōu)化WordPress 數(shù)據(jù)庫(kù)查詢(xún):首先需要在 WordPress 的wp-config.php里進(jìn)行優(yōu)化操作,具體配置如下:
1
2
3
4
5
6
7
8
9
10
11
12
define('COOKIE_DOMAIN', '');
//設(shè)置地址而不是服務(wù)器檢查,這將減少服務(wù)器查詢(xún)
define('WP_HOME', '');
define('WP_SITEURL', '');
//優(yōu)化文章修改歷史:Post-Revisioning
define('AUTOSAVE_INTERVAL', 120);// 修改WordPress 編輯器自動(dòng)保存時(shí)間間隔為120秒保存一次
define('WP_POST_REVISIONS', 5);//僅保留保留5個(gè)最近修改,也可以減小此數(shù)字,但不能太低了
define('EMPTY_TRASH_DAYS', 7 );//7天后自動(dòng)清空回收站,這個(gè)自己根據(jù)情況設(shè)定
define( 'CORE_UPGRADE_SKIP_NEW_BUNDLED', true );//更新時(shí)跳過(guò) wp-content 目錄,增加更新效率
//通過(guò)剔除對(duì)模板路徑和樣式表路徑的數(shù)據(jù)庫(kù)查詢(xún),這樣可提高站點(diǎn)的性能。
define('TEMPLATEPATH', '/wp-content/themes/wa');
define('STYLESHEETPATH', '/wp-content/themes/wa');
如果你沒(méi)有使用緩存插件,開(kāi)啟WP自帶的緩存(Cache)功能,并設(shè)置緩存時(shí)間,是非常必要的事情。
1
2
3
define('WP_CACHE, true); // 打開(kāi) WordPress 自帶的緩存功能
define('ENABLE_CACHE', true); // 緩存開(kāi)關(guān)
define('CACHE_EXPIRATION_TIME', 3600); // 緩存時(shí)間間隔
注:3.0后版本要開(kāi)始緩存在/wp-includes/default-constants.php中開(kāi)啟,切記哦!
wordpress程序自身會(huì)經(jīng)常向wordpress點(diǎn)抗 的服務(wù)器發(fā)送請(qǐng)求傳送數(shù)據(jù),我們可以通過(guò)設(shè)置wp-config.php來(lái)屏蔽此類(lèi)外部請(qǐng)求的發(fā)送,在wp-config.php添加如下代碼:
1
2
//禁止WordPress程序發(fā)出對(duì)外請(qǐng)求
define('WP_HTTP_BLOCK_EXTERNAL', true);
值得注意的是我們?cè)诩尤胍陨洗a后你的網(wǎng)站將無(wú)法對(duì)任何一個(gè)外部服務(wù)器發(fā)出請(qǐng)求,如果站長(zhǎng)朋友們?yōu)榱思铀?a target="_blank">網(wǎng)站收錄使用了ping功能,加上以上代碼后ping功能將會(huì)失效。解決方法:我們可以設(shè)置對(duì)外請(qǐng)求白名單即可解決ping失效問(wèn)題,代碼如下:(以百度ping為例)
1
define('WP_ACCESSIBLE_HOSTS', 'ping.baidu點(diǎn)抗 ');//僅允許 WordPress 向ping.baidu點(diǎn)抗 發(fā)送請(qǐng)求
通過(guò) WordPress 的wp-config.php配置完后大家 可以用本文開(kāi)頭分享的代碼在源代碼里查看和對(duì)比一下是不是數(shù)據(jù)庫(kù)查詢(xún)次數(shù)和內(nèi)存使用量有所改善。還有就是要養(yǎng)成提前備份的好習(xí)慣,否則后果自負(fù)了!