織夢DEDECMS安全防護(hù)設(shè)置及漏洞修復(fù)
一、程序一定要從織夢官網(wǎng)下載,其他地方下載的不能保證安全。
二、下載后的程序在正常運(yùn)行后,要?jiǎng)h除下列文件夾(根據(jù)你的需要選擇刪除)。
member 會(huì)員文件夾整個(gè)刪除
special 專題文件夾整個(gè)刪除
install 安裝文件夾整個(gè)刪除
robots.txt 文件刪除
刪除 /templets/default 官方默認(rèn)模板這個(gè)文件夾(在你自己有模板的情況下,如果沒有,請勿刪除)
刪除PLUS文件夾除下列文件外的所有文件,保留下面幾個(gè)文件。
/plus/img (文件夾)
/plus/count.php
/plus/diy.php
/plus/list.php
/plus/search.php
/plus/view.php
三、修改默認(rèn)后臺(tái)管理目錄名稱,安裝時(shí)不要用默認(rèn)的admin當(dāng)管理員帳號(hào)及密碼。
四、修復(fù)剛剛下載的織夢最新程序包里已知漏洞
打開 /include/dialog/select_soft_post.php?搜索
$fullfilename = $cfg_basedir.$activepath.'/'.$filename;
在它上面加入
if (preg_match('#.(php|pl|cgi|asp|aspx|jsp|php5|php4|php3|shtm|shtml)[^a-zA-Z0-9]+$#i', trim($filename))) {
ShowMsg("你指定的文件名被系統(tǒng)禁止!",'javascript:;');
exit();
}
打開 /dede/media_add.php 找到(dede是你網(wǎng)站管理后臺(tái)目錄名稱)
$fullfilename = $cfg_basedir.$filename;
在它上面加入
if (preg_match('#.(php|pl|cgi|asp|aspx|jsp|php5|php4|php3|shtm|shtml)[^a-zA-Z0-9]+$#i', trim($filename))){
ShowMsg("你指定的文件名被系統(tǒng)禁止!",'java script:;');
exit();
}
打開/dede/config.php
搜索
if(!isset($token) || strcasecmp($token, $_SESSION['token']) != 0){
大約在67行,把它替換為
if(!isset($token) || strcasecmp($token, $_SESSION['token']) !== 0){
五、利用偽靜態(tài)功能禁止以下目錄運(yùn)行php腳本
apache環(huán)境
RewriteEngine on
#安全設(shè)置 禁止以下目錄運(yùn)行指定php腳本
RewriteCond % !^$
RewriteRule a/(.*).(php)$ – [F]
RewriteRule data/(.*).(php)$ – [F]
RewriteRule templets/(.*).(php|htm)$ – [F]
RewriteRule uploads/(.*).(php)$ – [F]
iis環(huán)境
<rule name="Block data" stopProcessing="true">
<match url="^data/(.*).php$" />
<conditions logicalGrouping="MatchAny">
<add input="{USER_AGENT}" pattern="data" />
<add input="{REMOTE_ADDR}" pattern="" />
</conditions>
<action type="AbortRequest" />
</rule>
<rule name="Block templets" stopProcessing="true">
<match url="^templets/(.*).php$" />
<conditions logicalGrouping="MatchAny">
<add input="{USER_AGENT}" pattern="templets" />
<add input="{REMOTE_ADDR}" pattern="" />
</conditions>
<action type="AbortRequest" />
</rule>
<rule name="Block SomeRobot" stopProcessing="true">
<match url="^uploads/(.*).php$" />
<conditions logicalGrouping="MatchAny">
<add input="{USER_AGENT}" pattern="SomeRobot" />
<add input="{REMOTE_ADDR}" pattern="" />
</conditions>
<action type="AbortRequest" />
</rule>
Nginx環(huán)境
這段配置代碼一定要放在 location ~ .php(.*)$ 的前面才可以生效,配置完后記得重啟Nginx生效。
location ~* /(a|data|templets|uploads|images)/(.*).(php)$ {
return 403;
}
寶塔面板在配置文件里面。加在紅框上面即可。如下圖
給所有站加上的話。請打開下面路徑,根據(jù)你的PHP版本找到相應(yīng)的文件。我這里是5.4版本的。
在最上面添加上面代碼,然后重啟服務(wù)。親測有效。
檢測設(shè)置成功的方法,新建一個(gè)隨意內(nèi)容的php文件放到a|data|templets|uploads任意文件夾,如果訪問出現(xiàn)4.3錯(cuò)誤,說明設(shè)置正常。如果顯示你剛才設(shè)置的內(nèi)容,剛是失敗。按步驟好好檢測一下看看是不是設(shè)置錯(cuò)誤。
六、網(wǎng)站上有一個(gè)爆網(wǎng)站后臺(tái)的方法:就是訪問/data/mysql_error_trace.inc或者/data/mysqli_error_trace.inc,分析里面的代碼來爆網(wǎng)站后臺(tái)。可在偽靜態(tài)配置文件里加入下面代碼即可,這是nginx下的配置文件,親測有效,其他運(yùn)行環(huán)境自行轉(zhuǎn)換
location /data {
rewrite ^/data\/(.*)$ /404.html;
}
這樣,訪問DATA的文件全都會(huì)提示404錯(cuò)誤。親測有效!
我們可以關(guān)閉這個(gè)生成這個(gè)文件
方法:
打開? /include/dedesql.class.php 找到
//保存MySql錯(cuò)誤日志
$fp = @fopen($errorTrackFile, 'a');
@fwrite($fp, '<'.'?php exit();'."\r\n/*\r\n{$savemsg}\r\n*/\r\n?".">\r\n");
@fclose($fp);
這幾行刪除就行了,如果你的 data 文件夾里面有 mysql_error_trace.inc 文件,記得刪除它。
同理我們還可以設(shè)置禁止訪問plus|templets|uploads
等目錄
location /plus {
rewrite ^/plus\/(\w+)\.php(.*)$ /404.html;
}
location /templets {
rewrite ^/templets/(.*)/(.*).htm$ /404.html;
}
location /uploads {
rewrite ^/uploads\/(\w+)\.php(.*)$ /404.html;
}
1.本站主要是為了記錄工作、學(xué)習(xí)中遇到的問題,可能由于本人技術(shù)有限,內(nèi)容難免有紕漏,一切內(nèi)容僅供參考。
2.本站部分內(nèi)容來源互聯(lián)網(wǎng),如果有圖片或者內(nèi)容侵犯您的權(quán)益請聯(lián)系我們刪除!
3.本站所有原創(chuàng)作品,包括文字、資料、圖片、網(wǎng)頁格式,轉(zhuǎn)載時(shí)請標(biāo)注作者與來源。