Products
GG网络技术分享 2025-03-18 16:14 0
大家好,这里是关于[宝塔面板网站防跨站攻击open_basedir无法关闭解决办法],[织梦DEDECMS安全防护设置及漏洞修复]问题的解答,希望对您有所帮助。如果你还想了解更多这方面的信息,请关注本站其他相关内容,共同学习吧!
教程大全open_basedir,网站防跨站攻击
宝塔面板网站防跨站攻击open_basedir无法关闭解决办法
今天在群里看到群友发的一个问题,宝塔面板创建的网站默认是开启网站防跨站攻击的(网站设置–网站目录–防跨站攻击)。
然后一些站点会报错。将其勾选掉后重新打开发现还是勾选的状态。
解决办法:
网站根目录下有一个.user.ini的问斩,将其删掉即可。
该文件内容是:open_basedir=/www/wwwroot/网站地址/:/tmp/:/proc/
member 会员文件夹整个删除
special 专题文件夹整个删除
install 安装文件夹整个删除
robots.txt 文件删除
删除 /templets/default 官方默认模板这个文件夹(在你自己有模板的情况下,如果没有,请勿删除)
删除PLUS文件夹除下列文件外的所有文件,保留下面几个文件。
/plus/img (文件夹)
/plus/count.php
/plus/diy.php
/plus/list.php
/plus/search.php
/plus/view.php
打开 /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("你指定的文件名被系统禁止!",'javascript:;');
exit();
}
打开 /dede/media_add.php 找到(dede是你网站管理后台目录名称)
$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("你指定的文件名被系统禁止!",'java script:;');
exit();
}
打开/dede/config.php
搜索
if(!isset($token) || strcasecmp($token, $_SESSION['token']) != 0){
大约在67行,把它替换为
if(!isset($token) || strcasecmp($token, $_SESSION['token']) !== 0){
apache环境
<rule name="Block data" stopProcessing="true">
<match url="^data/(.*).php#34; />
<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#34; />
<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#34; />
<conditions logicalGrouping="MatchAny">
<add input="{USER_AGENT}" pattern="SomeRobot" />
<add input="{REMOTE_ADDR}" pattern="" />
</conditions>
<action type="AbortRequest" />
</rule>
iis环境
location ~* /(a|data|templets|uploads|images)/(.*).(php)$ {
return 403;
}
Nginx环境
这段配置代码一定要放在 location ~ .php(.*)$ 的前面才可以生效,配置完后记得重启Nginx生效。
location ~* /(a|data|templets|uploads|images)/(.*).(php)$ {
return 403;
}
宝塔面板在配置文件里面。加在红框上面即可。如下图
给所有站加上的话。请打开下面路径,根据你的PHP版本找到相应的文件。我这里是5.4版本的。
在最上面添加上面代码,然后重启服务。亲测有效。
检测设置成功的方法,新建一个随意内容的php文件放到a|data|templets|uploads任意文件夹,如果访问出现4.3错误,说明设置正常。如果显示你刚才设置的内容,刚是失败。按步骤好好检测一下看看是不是设置错误。
location /data {
rewrite ^/data\\/(.*)$ /404.html;
}
这样,访问DATA的文件全都会提示404错误。亲测有效!
我们可以关闭这个生成这个文件
方法:
打开 /include/dedesql.class.php 找到
//保存MySql错误日志
$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 文件,记得删除它。
同理我们还可以设置禁止访问
location /plus {
rewrite ^/plus\\/(\\w+)\\.php(.*)$ /404.html;
}
location /templets {
rewrite ^/templets/(.*)/(.*).htm$ /404.html;
}
location /uploads {
rewrite ^/uploads\\/(\\w+)\\.php(.*)$ /404.html;
}
等目录
location /plus {
rewrite ^/plus\\/(\\w+)\\.php(.*)$ /404.html;
}
location /templets {
rewrite ^/templets/(.*)/(.*).htm$ /404.html;
}
location /uploads {
rewrite ^/uploads\\/(\\w+)\\.php(.*)$ /404.html;
}
Demand feedback