当前位置:科技动态 > php.ini安全配置

php.ini安全配置

  • 发布:2023-10-10 22:01

php用得越来越多了!安全问题更重要!以下是如何安全配置 php.ini

安全配置一

(1)开启php的安全模式
php的安全模式是一个非常重要的内置安全机制,可以控制php中的一些函数,比如system()、
同时,很多文件操作功能都受到权限控制,某些关键文件,如/etc/passwd是不允许的。
但是默认的php.ini没有打开安全模式,我们打开它:
安全模式=开启

(2) 用户组安全
当safe_mode打开时,safe_mode_gid关闭,那么php脚本就可以访问该文件了,同样的
组中的用户也可以访问该文件。
推荐设置为:
safe_mode_gid = 关闭
如果我们不设置的话,我们可能无法操作我们服务器网站目录下的文件。例如,我们需要
对文件进行操作时。

(3)安全模式下执行程序主目录
如果开启了安全模式但想要执行某些程序,可以指定要执行的程序的主目录:
safe_mode_exec_dir = D:/usr/bin
一般不需要执行任何程序,所以建议不要执行系统程序目录。您可以指向一个目录。
然后复制需要执行的程序,如:
safe_mode_exec_dir = D:/tmp/cmd
不过,我建议不要执行任何程序,那么你可以指向我们的web目录:
safe_mode_exec_dir = D:/usr/www

(4) 在安全模式下包含文件
如果您想在安全模式下包含一些公共文件,则修改选项:
safe_mode_include_dir = D:/usr/www/include/
事实上,一般PHP脚本中包含的文件都已经写在程序本身中了。这个可以根据具体需要来设置。

(5)控制php脚本可以访问的目录
使用open_basedir选项控制PHP脚本只访问指定目录,可以避免PHP脚本访问
不应该访问的文件在一定程度上限制了phpshell的危害。我们一般可以设置为只访问网站目录:
open_basedir = D:/usr/www

(6) 关闭危险功能
如果开启安全模式,功能禁止是没有必要的,但我们还是出于安全考虑。例如,
我们不认为我们想要执行PHP函数,包括可以执行命令或可以查看PHP信息的system()。
phpinfo() 等函数,那么我们可以禁用它们:
disable_functions = 系统、passthru、exec、shell_exec、popen、phpinfo
如果你想禁止任何文件和目录操作,可以关闭很多文件操作
disable_functions = chdir、chroot、dir、getcwd、opendir、readdir、scandir、fopen、取消链接、删除、复制、mkdir、  rmdir、重命名、文件、file_get_contents、fputs、fwrite、chgrp、chmod、chown
以上仅列出了一些常用的文件处理函数。您还可以将上面的执行命令功能与该功能结合起来。
可以抵抗大多数phpshell。

(7) 关闭http header中PHP版本信息的泄露
为了防止黑客获取服务器中的PHP版本信息,我们可以关闭http header中的信息:
expose_php = 关闭
例如,当黑客telnet www.sychzs.cn 80时,他将无法看到PHP信息。

(8)关闭全局变量注册
在PHP中提交的变量,包括使用POST或GET提交的变量,都会自动注册为全局变量,可以直接访问。
这对于服务器来说是非常不安全的,所以我们不能让它注册为全局变量,所以我们关闭注册全局变量选项:
register_globals = 关闭
当然,如果设置了这个,那么就必须使用合理的方法来获取对应的变量,比如获取GET提交的变量var,
那么你必须使用$_GET['var']来获取它。 PHP程序员应该注意这一点。

(9)开启magic_quotes_gpc防止SQL注入
SQL注入是一个非常危险的问题。可能会导致网站后端被入侵,或者整个服务器瘫痪。
所以要小心。 php.ini中有一个设置:
magic_quotes_gpc = 关闭
默认情况下此功能处于关闭状态。如果开启,它会自动转换用户提交的SQL查询。
例如将‘转换为\’等,这对于防止SQL注入起到了很大的作用。所以我们建议将其设置为:
magic_quotes_gpc = 开

(10) 错误信息控制
一般情况下php在未连接数据库或者其他情况下会提示错误。一般来说,错误消息中会包含php脚本。
之前的路径信息或者查询SQL语句等信息提供给黑客后并不安全,所以一般建议服务器禁用错误提示:
显示错误 = 关闭
如果要显示错误信息,一定要设置显示错误的级别,比如只显示警告以上的信息:
错误报告 = E_WARNING & E_ERROR
当然,我还是建议关闭错误提示。

(11) 错误日志
建议关闭display_errors后记录错误信息,以便查找服务器运行的原因:
log_errors = 开
同时还必须设置错误日志的存放目录。建议将root apache日志存放在一起:
error_log = D:/usr/local/apache2/logs/php_error.log
注意:该文件必须给予apache用户和组有写权限。

MYSQL的降权操作
创建一个新用户,例如mysqlstart
net 用户 mysqlstart ****microsoft /add
net 本地组用户 mysqlstart /del

不属于任何团体
如果MYSQL安装在d:\mysql,则给予mysqlstart完全控制权限
然后在系统服务中设置MYSQL服务属性。在登录属性中,选择这个用户mysqlstart并输入密码并确认。
重启MYSQL服务,MYSQL将以低权限运行。
如果apache是​​建立在windos平台上的,我们需要注意一件事。默认情况下,apache 以系统权限运行。
这很可怕,这让人感觉很不舒服。那我们就降低apache的权限吧。

网络用户 apache ****microsoft /add
net 本地组用户 apache /del

好的。我们创建了一个不属于任何组的用户 apche。
我们打开计算机管理器,选择服务,点击apache服务的属性,我们选择登录,选择这个账户,我们填写上面创建的账户和密码,
重新启动apache服务,ok,apache正在以低权限运行。
其实我们还可以设置每个文件夹的权限,让apache用户只能执行我们希望它做的事情,为每个目录创建一个单独的读写用户。
这也是许多虚拟主机提供商使用的流行配置方法。然而,当使用这种方法来防止这种情况时,就显得矫枉过正了。

安全配置2

上一节介绍了IIS+MySQL+PHP的基本配置流程以及Windows的基本权限设置。这一部分我们需要讨论PHP的安全配置以及Web目录的安全配置。当然,我们还必须有IIS的安全配置异常。让我先在这里说几句话。
我们的最终目标是网站只运行PHP,不支持ASP或www.sychzs.cn,从而使特定目录或子网站无法执行PHP脚本,例如图片目录。我们将其设置为无法运行PHP,因此即使您的网站已被“黑客”登录到后端并可以上传文件。但最终他无法执行webshel​​l。
即使拿到了webshel​​l,也无法读取目录或文件,也无法执行命令。也就是说,再强大的webshel​​l在黑客手中也没有任何使用价值,黑客最终会发疯而死。哈哈!事实上,做到这一点并不是很难。就跟随我的脚步吧。学习完本文后,您将能够独立完成此类异常服务器配置。

1。 php.ini文件配置异常

为什么要把php.ini放在前面?因为我们的网站是PHP的,所以很多默认选项都是不安全的。这就给黑客留下了很多可乘之机,所以第一步我们必须将php.ini设置为异常,以防止一般脚本黑客的攻击。
我们先了解一下php.ini的一些基本概念。空白字符和以分号开头的行将被简单地忽略。设置指令的格式如下: 指令=值 指令名称(指令)区分大小写!所以“foo=bar”与“FOO=bar”不同。值可以是:

1。用引号分隔的字符串(例如:“foo”)
2。数字(整数或浮点数,例如:0、1、34、-1、33.55)
3。一个 PHP 常量(例如:E_ALL、M_PI)
4。 INI 常量(开、关、无)
5。表达式(例如:E_ALL & ~E_NOTICE)

还有一种就是设置一个布尔值。 1为On,表示开启,0为Off,表示关闭。 php.ini 分为很多部分,例如:模块部分、php 全局配置、数据库配置等。图 1 显示了一个基本的 php.ini 示例。了解了基本概念后,我们就可以开始异常配置之旅了。

相关文章