推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

PHP的一些安全设置

   2023-08-10 网络整理佚名1820
核心提示:ini(默认配置文件位置),将如下配置值改为Off如果开启全局变量会使一些表单提交的数据被自动注册为全局变量。如果开启了全局变量,则服务器端PHP脚本可以用$和$来获取到用户名和密码,这会造成极大的脚本注入危险。4、文件系统限制如果不限制使用下面的脚本代码(hack.php)可以获取到系统密码。这个特性在缺省情况下是启用的,也可以通过php.

点击进入“PHP开源社区”

免费获取高级访谈、文档和视频资源

1.屏蔽PHP错误输出

在/etc/php.ini(默认配置文件位置)中,将以下配置值更改为Off

portant;overflow-wrap: break-word !important;">display_errors=Off

不要将错误堆栈信息直接输出到网页,以防止黑客利用相关信息。

正确的做法是:

将错误日志写入日志文件,方便故障排除。

2. 屏蔽PHP版本。

默认情况下,PHP版本会显示在返回头中,例如:

X——作者:PHP/7.2.0

将php.ini中以下配置值更改为Off

portant;overflow-wrap: break-word !important;">expose_php=Off

3. 关闭全局变量

如果启用全局变量,某些表单提交的数据将自动注册为全局变量。 代码如下所示:

portant;overflow-wrap: break-word !important;"><form action="/login" method="post">portant;overflow-wrap: break-word !important;"><input name="username" type="text">portant;overflow-wrap: break-word !important;"><input name="password" type="password">portant;overflow-wrap: break-word !important;"><input type="submit" value="submit" name="submit">portant;overflow-wrap: break-word !important;">portant;overflow-wrap: break-word !important;">form>

如果启用全局变量,服务器端PHP脚本可以使用$和$来获取用户名和密码,这会造成很大的脚本注入风险。

打开方法是修改php.ini如下:

portant;overflow-wrap: break-word !important;">register_globals=On

建议关闭,参数如下:

portant;overflow-wrap: break-word !important;">register_globals=Off

关闭时只能从$_POST、$_GET、$中获取相关参数。

4. 文件系统限制

您可以通过以下方式限制 PHP 可以访问的系统目录

如果不限制使用下面的脚本代码(hack.php),就可以获取系统密码。

portant;overflow-wrap: break-word !important;">portant;overflow-wrap: break-word !important;"> portant;overflow-wrap: break-word !important;">echo file_get_contents('/etc/passwd');

设置后会报错,并且不再显示相关信息,这样系统目录b就不会被非法访问:

PHP : (): 在 . 文件(/etc/)不是 /var/www/hack.php 第 3 行中的路径:(/var/www)

: (): 在 。 文件(/etc/)不是 /var/www/hack.php 第 3 行中的路径:(/var/www) PHP : (/etc/): 打开:不在 /var/www/ 中hack.php 第 3 行

: (/etc/): 打开:不在 /var/www/hack.php 第 3 行

设置方法如下:

portant;overflow-wrap: break-word !important;">open_basedir=/var/www

5.禁止远程资源访问。

portant;overflow-wrap: break-word !important;">allow_url_fopen=Offportant;overflow-wrap: break-word !important;"> portant;overflow-wrap: break-word !important;">allow_url_include=Off

其他第三方安全扩展

6.

它是PHP程序的保护系统。 它最初的设计目的是为了保护服务器和用户免受PHP程序和PHP核心中已知或未知的缺陷的影响(感觉很实用,可以抵御一些小型攻击)。 有两个独立的部分,使用时可以单独使用,也可以组合使用。

第一部分是 PHP 核心的补丁,以防止缓冲区溢出或格式字符串漏洞(必须!);

第二部分是强大的PHP扩展(扩展模式还不错,安装方便……),包括所有其他的保护措施。

安装扩展

portant;overflow-wrap: break-word !important;">wget http://download.suhosin.org/suhosin-0.9.37.1.tar.gzportant;overflow-wrap: break-word !important;">tar zxvf suhosin-0.9.37.1.tar.gzportant;overflow-wrap: break-word !important;">cd suhosin-0.9.37.1/portant;overflow-wrap: break-word !important;">phpizeportant;overflow-wrap: break-word !important;">./configure  --with-php-config=/usr/local/bin/php-configportant;overflow-wrap: break-word !important;">makeportant;overflow-wrap: break-word !important;">make installportant;overflow-wrap: break-word !important;">在php.ini下加入suhosin.so即可portant;overflow-wrap: break-word !important;"> portant;overflow-wrap: break-word !important;">extension=suhosin.so

特征

运行时保护

保护

其中的数据通常以明文形式存储在服务器上。 这里,$是在服务器端加密和解密的。 这样,当句柄存储在数据库中时,就不会轻易被攻破。 很多时候我们的数据会存储一些敏感字段。

该功能默认启用,也可以通过 php.ini 修改:

portant;overflow-wrap: break-word !important;">suhosin.session.encrypt = Onportant;overflow-wrap: break-word !important;">suhosin.session.cryptkey = zuHywawAthLavJohyRilvyecyondOdjoportant;overflow-wrap: break-word !important;">suhosin.session.cryptua = Onportant;overflow-wrap: break-word !important;">suhosin.session.cryptdocroot = Onportant;overflow-wrap: break-word !important;"> portant;overflow-wrap: break-word !important;">;; IPv4 onlyportant;overflow-wrap: break-word !important;">suhosin.session.cryptraddr = 0portant;overflow-wrap: break-word !important;">suhosin.session.checkraddr = 0

加密

客户端浏览器传输的 HTTP 标头也是明文形式。通过加密,您可以保护您的应用程序免受多种攻击,例如

php.ini 中的加密配置:

portant;overflow-wrap: break-word !important;">suhosin.cookie.encrypt = Onportant;overflow-wrap: break-word !important;"> portant;overflow-wrap: break-word !important;">;; the cryptkey should be generated, e.g. with 'apg -m 32'portant;overflow-wrap: break-word !important;">suhosin.cookie.cryptkey = oykBicmyitApmireipsacsumhylWaps1portant;overflow-wrap: break-word !important;">suhosin.cookie.cryptua = Onportant;overflow-wrap: break-word !important;">suhosin.cookie.cryptdocroot = Onportant;overflow-wrap: break-word !important;"> portant;overflow-wrap: break-word !important;">;; whitelist/blacklist (use only one)portant;overflow-wrap: break-word !important;">;suhosin.cookie.cryptlist = WALLET,IDEASportant;overflow-wrap: break-word !important;">suhosin.cookie.plainlist = LANGUAGEportant;overflow-wrap: break-word !important;"> portant;overflow-wrap: break-word !important;">;; IPv4 onlyportant;overflow-wrap: break-word !important;">suhosin.cookie.cryptraddr = 0portant;overflow-wrap: break-word !important;">suhosin.cookie.checkraddr = 0portant;overflow-wrap: break-word !important;">Blocking Functionsportant;overflow-wrap: break-word !important;">测试portant;overflow-wrap: break-word !important;"> portant;overflow-wrap: break-word !important;">##默认PHP的Session保存在tmp路径下portant;overflow-wrap: break-word !important;">ll  -rt /tmp | grep sessportant;overflow-wrap: break-word !important;">##扩展未开启时查看某条sesson的数据portant;overflow-wrap: break-word !important;">cat  sess_ururh83qvkkhv0n51lg17r4aj6portant;overflow-wrap: break-word !important;">//记录是明文的portant;overflow-wrap: break-word !important;">##扩展开启后查看某条sesson 的数据portant;overflow-wrap: break-word !important;">cat  sess_ukkiiiheedupem8k4hheo0b0v4portant;overflow-wrap: break-word !important;">//记录是密文的portant;overflow-wrap: break-word !important;">可见加密对安全的重要性

阻塞功能

白名单

portant;overflow-wrap: break-word !important;">##显式指定指定白名单列表portant;overflow-wrap: break-word !important;">suhosin.executor.func.whitelist = htmlentities,htmlspecialchars,base64_encodeportant;overflow-wrap: break-word !important;">suhosin.executor.eval.whitelist = htmlentities,htmlspecialchars,base64_encodeportant;overflow-wrap: break-word !important;"> portant;overflow-wrap: break-word !important;">portant;overflow-wrap: break-word !important;">echo htmlentities('');portant;overflow-wrap: break-word !important;">eval('echo htmlentities("");');

黑名单

portant;overflow-wrap: break-word !important;">##显式指定指定黑名单列表portant;overflow-wrap: break-word !important;">suhosin.executor.func.blacklist = assert,unserialize,exec,popen,proc_open,passthru,shell_exec,system,hail,parse_str,mt_srandportant;overflow-wrap: break-word !important;">suhosin.executor.eval.whitelist = assert,unserialize,exec,popen,proc_open,passthru,shell_exec,system,hail,parse_str,mt_srandportant;overflow-wrap: break-word !important;">通过日志来查看非法调用黑白名单portant;overflow-wrap: break-word !important;"> portant;overflow-wrap: break-word !important;">suhosin.simulation = 1portant;overflow-wrap: break-word !important;">suhosin.log.file = 511portant;overflow-wrap: break-word !important;">suhosin.log.file.name = /tmp/suhosin-alert.log

其他配置项

portant;overflow-wrap: break-word !important;">suhosin.executor.include.max_traversal    扩目录的最大深度,可以屏蔽切换到非法路径portant;overflow-wrap: break-word !important;">suhosin.executor.include.whitelist        允许包含的URL,用逗号分隔portant;overflow-wrap: break-word !important;">suhosin.executor.include.blacklist        禁止包含的URL,用逗号分隔portant;overflow-wrap: break-word !important;">suhosin.executor.disable_eval = On        禁用eval函数portant;overflow-wrap: break-word !important;"> portant;overflow-wrap: break-word !important;">suhosin.upload.max_uploadsportant;overflow-wrap: break-word !important;">suhosin.upload.disallow_elfportant;overflow-wrap: break-word !important;">suhosin.upload.disallow_binaryportant;overflow-wrap: break-word !important;">suhosin.upload.remove_binaryportant;overflow-wrap: break-word !important;">suhosin.upload.verification_script        上传文件检查脚本,可以来检测上传的内容是否包含webshell特征

使用时,你可以获得一些错误日志,你可以将这些日志放入系统日志中,也可以同时写入任何其他日志文件; 它还可以为每个虚拟主机创建黑名单和白名单; 您可以过滤 GET 和 POST 请求、文件上传;

还可以发送加密会话,可以在线设置不能发送的存储等;

与原来的 PHP 强化补丁不同,它兼容 Zend 等第三方扩展。

*免责声明:本文整理于网络,版权归原作者所有。 若来源信息错误或侵犯权益,请联系我们删除或授权。

portant;overflow-wrap: break-word !important;">
END
portant;overflow-wrap: break-word !important;">


portant;overflow-wrap: break-word !important;">




PHP开源社区

扫描关注  进入”PHP资料“

免费获取进阶

面试、文档、视频资源portant;overflow-wrap: break-word !important;">    


 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON