Blogger Information
Blog 1
fans 0
comment 0
visits 1362
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
转载《PHP安全之道》学习笔记1:PHP项目安全设置
栾涛
Original
1362 people have browsed it

在全球范围来看,超过了80%的网站是使用php进行搭建的,由于脚本语言和早期版本设计的诸多原因,php项目存在不少安全隐患。从配置选项来看,可以做如下的优化。

1.屏蔽PHP错误输出。
在/etc/php.ini(默认配置文件位置),将如下配置值改为Off
display_errors=Off

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

正确的做法是:
把错误日志写到日志文件中,方便排查问题。

2.屏蔽PHP版本。
默认情况下PHP版本会被显示在返回头里,如:
Response Headers X-powered-by: PHP/7.2.0

将php.ini中如下的配置值改为Off

expose_php=Off

3.关闭全局变量
如果开启全局变量会使一些表单提交的数据被自动注册为全局变量。代码如下:
<form action="/login" method="post">
<input name="username" type="text">
<input name="password" type="password">
<input type="submit" value="submit" name="submit">
</form>
如果开启了全局变量,则服务器端PHP脚本可以用$username和$password来获取到用户名和密码,这会造成极大的脚本注入危险。

开启方法是在php.ini中修改如下:

register_globals=On

建议关闭,参数如下:

register_globals=Off
当关闭后,就只能从$_POST、$_GET、$_REQUEST里面获取相关参数。

4.文件系统限制
可以通过open_basedir来限制PHP可以访问的系统目录。

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

<?php

echo file_get_contents('/etc/passwd');
当设置了后则会报错,不再显示相关信息,让系统目录b不会被非法访问:

PHP Warning: file_get_contents(): open_basedir restriction in effect. File(/etc/passwd) is not within the allowed path(s): (/var/www) in /var/www/hack.php on line 3

Warning: file_get_contents(): open_basedir restriction in effect. File(/etc/passwd) is not within the allowed path(s): (/var/www) in /var/www/hack.php on line 3 PHP Warning: file_get_contents(/etc/passwd): failed to open stream: Operation not permitted in /var/www/hack.php on line 3

Warning: file_get_contents(/etc/passwd): failed to open stream: Operation not permitted in /var/www/hack.php on line 3

设置方法如下:

open_basedir=/var/www

5.禁止远程资源访问
allow_url_fopen=Off allow_url_include=Off

其他第三方安全扩展
Suhosin
设计初衷是为了保护服务器和用户抵御PHP程序和PHP核心中,已知或者未知的缺陷。
PHP7支持版本

Taint

用于xss/sqli/shell注入的检测。

转载:https://www.cnblogs.com/freephp/p/11931277.html

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post