当前位置: 首页 > 后端技术 > PHP

PHP的一些安全设置

时间:2023-03-29 19:17:21 PHP

最近和同事聊了聊PHP安全相关的问题,记录一些心得。由于脚本语言和早期版本设计的诸多原因,php项目存在很多安全隐患。从配置选项的角度,可以做如下优化。1.屏蔽PHP错误输出。在/etc/php.ini(默认配置文件位置)中,将以下配置值改为Offdisplay\_errors=Off,不直接向网页输出错误堆栈信息,防止黑客利用相关信息。正确的做法是:将错误日志写入日志文件,方便排查问题。2.屏蔽PHP版本。默认情况下,返回头中会显示PHP版本,如:ResponseHeadersX-powered-by:PHP/7.2.0将php.ini中如下配置值改为Offexpose\_php=Off3.关闭全局变量.如果启用全局变量,一些表单提交的数据将自动注册为全局变量。代码如下:如果启用全局变量,服务器端PHP脚本可以使用$username和$password来获取它的用户名和密码,这会带来很大的脚本注入风险。开启方式在php.ini中修改如下:register\_globals=On建议关闭,参数如下:register\_globals=Off关闭时只能从$\_POST,$_GET获取相关参数,$_请求。4.文件系统限制可以使用open_basedir来限制PHP可以访问的系统目录。如果不限制使用下面的脚本代码(hack.php),就可以获得系统密码。');eval('echohtmlentities("");');blacklist##显式指定指定黑名单listsuhosin.executor.func.blacklist=assert,unserialize,exec,popen,proc\_open,passthru,shell\_exec,system,hail,parse\_str,mt\_srandsuhosin.executor.eval.whitelist=断言,反序列化,exec,popen,proc\_open,passthru,shell\_exec,system,hail,parse\_str,mt\_srand使用log查看非法调用黑白名单suhosin.simulation=1suhosin.log.file=511suhosin.log.file.name=/tmp/suhosin-alert.log其他配置项suhosin.executor.include.max\_traversal扩展目录的最大深度,可以阻止切换到非法路径suhosin.executor.include.whitelist允许包含URL,以逗号分隔suhosin。executor.disable\_eval=Ondisableevalfunctionsuhosin.upload.max\_uploadssuhosin.upload.disallow\_elfsuhosin.upload.disallow\_binarysuhosin.upload.remove\_binarysuhosin.upload.verification\_script上传文件校验脚本,可用于检测上传的内容是否包含webshel??l特征用Suhosin可以得到一些错误日志,可以放入系统日志,同时也可以写入其他任何日志文件;它还可以为每个虚拟主机创建黑名单和白名单;您可以过滤GET和POST请求、文件上传和cookie;还可以传输加密的session和cookies,可以设置不能在线传输的存储等;它不像原始的PHP加固补丁,Suhosin与ZendOptimizer等第三方扩展兼容