安 全,PHP代码编写是一方面,PHP的配置更是非常关键。
我们php手手工安装的,php的 默认配置文件在/usr/local/apache2/conf/php.ini,我们最主要就是 要配置php.ini中的内容,让我们执行 php能 够更安全。整个PHP中的安全设置主要是为了防止phpshell和SQL Injection的攻击,一下我们慢慢探讨。我们先使用任何编辑工具打开 /etc/local/apache2/conf/php.ini,如果你是采用其他方式安装,配置文件可能不 在该目录。
(1)打开php的安全模式
php的安全模式是个非常重要的内嵌的安全机制,能够控制一些php中的函数,比如system(),
同时把很多文件操作函数进行了权限控制,也 不允许对某些关键文件的文件,比如/etc/passwd,
但是默认的php.ini是没有打开安全模式的,我们把它打开:
safe_mode = on
(2)用户组安全
当safe_mode打开时,safe_mode_gid被 关闭,那么php脚本能够对文件进行访问,而且相同
组的用户也能够对文件进行访问。
建议设置为:
safe_mode_gid = off
如果不进行设置,可能我们无法对我们服务器网站目录下的文件进行操作了,比如我们需要
对文件进行操作的时候。
(3)安全模式下执行程序主目录
如果安全模式打开了,但是却是要执 行某些程序的时候,可以指定要执行程序的主目录:
safe_mode_exec_dir = D:/usr/bin
一般情况下是不需要执行 什么程序的,所以推荐不要执行系统程序目录,可以指向一个目录,
然后把需要执行的程序拷贝过去,比如:
safe_mode_exec_dir = D:/tmp/cmd
但是,我更推荐不要执行 任何程序,那么就可以指向我们网页目录:
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)关闭危险函数
如果打开了安全模式,那么函数禁止 是可以不需要的,但是我们为了安全还是考虑进去。比如,
我们觉得不希望执行包括system()等在那的能够 执行命令的php函数,或者能够查看php信 息的
phpinfo()等函数,那么我们就可以禁止它们:
disable_functions = system,passthru,exec,shell_exec,popen,phpinfo
如果你要禁止任何文件和目录的操作,那么可以关闭很多文件操作
disable_functions = chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen,unlink,delete,copy,mkdir, rmdir,rename,file,file_get_contents,fputs,fwrite,chgrp,chmod,chown
以上只是列了部分不叫常用的文件处理函数,你也可以把上面执行命令函数和这个函数结合,
就能够抵制大部分的phpshell了。
(7)关闭PHP版 本信息在http头中的泄漏
我们为了防止黑客获取服务器中php版本的信息,可以关闭该信息斜路在http头 中:
expose_php = Off
比如黑客在telnet www.12345.com 80的 时候,那么将无法看到PHP的信息。
(8)关闭注册全局变量
在PHP中提交的变量,包括使用POST或者GET提交的变量,都将自动注册为全局变量,能够直接访问,
这是对服务器非常不安全的,所以我们不能让它 注册为全局变量,就把注册全局变量选项关闭:
register_globals = Off
当然,如果这样设置了,那么获取对应变量的时候就要 采用合理方式,比如获取GET提交的变量var,
那么就要用$_GET['var']来进行获取,这个php程序员 要注意。
(9)打开magic_quotes_gpc来 防止SQL注入
SQL注入是非常危险的问题,小则网站后台被入侵,重则整个服务器沦陷,
所以一定要小心。php.ini中有一个设置:
magic_quotes_gpc = Off
这个默认是关闭的,如果它打开后将自动把用 户提交对sql的查询进行转换,
比如把'转 为\'等,这对防止sql注射有重大作用。 所以我们推荐设置为:
magic_quotes_gpc = On
(10)错误信息控制
一般php在没有连接到数据库或者其他情况下会有提示错误,一般错误信息中会包含php脚本当
前的路径信息或者查询的SQL语句等信息,这类信息提 供给黑客后,是不安全的,所以一般服务器建议禁止错误提示:
display_errors = Off
如果你却是是要显示错误信息,一定要设置显示错误的级别,比如只显示警告以上的信息:
error_reporting = E_WARNING & E_ERROR
当然,我还是建议关闭错 误提示。
(11)错误日志
建议在关闭display_errors后能够把错 误信息记录下来,便于查找服务器运行的原因:
log_errors = On
同时也要设置错误日志存放的目录,建议根apache的 日志存在一起:
error_log = D:/usr/local/apache2/logs/php_error.log
注意:给文件必须允许apache用户的和组具有写的权限。
分享到:
相关推荐
以下是一些重要的PHP安全配置步骤: 1. **启用安全模式**:安全模式是PHP的一个内置功能,它可以限制某些潜在危险的函数,如`system()`,并控制文件操作。开启安全模式的配置是:`safe_mode = on`。但需要注意的是...
"一个PHP安全过滤类库"是专门为开发者设计的工具,旨在帮助他们在处理用户输入数据时防止各种安全威胁。这类库通常包含一系列预定义的函数或类方法,用于对输入数据进行验证、清理和转义,以消除潜在的SQL注入、跨站...
### PHP安全新闻早8点知识点解析 #### 一、变量拼接与动态变量 **标题:**PHP安全新闻早8点周刊版(2011-11-09 星期三)至(2011-11-15 星期二) **描述:**介绍了关于PHP变量拼接及动态变量使用的安全性和注意事项...
在《PHP安全编程系列》中,作者深入探讨了PHP开发中涉及的多种安全问题,并为如何避免这些问题提供了实用的方法和策略。文章首先提到了discuz论坛中的PHP防止SQL注入函数,强调了在PHP开发过程中使用discuz相关安全...
这个"PHP安全基础教程"针对已经具备一定PHP基础知识的学习者,旨在帮助他们深入理解如何编写更安全的代码,避免常见的安全漏洞。以下是一些核心的PHP安全知识点,基于教程中的内容进行详细阐述: 1. 输入验证与过滤...
这个"php安全过滤类.zip"文件可能包含了一个自定义的PHP类库,用于对用户提交的数据进行严格的验证和清理,以提升应用程序的安全性。 首先,让我们了解一些基本的安全过滤概念: 1. **SQL注入**:这是一种攻击方式...
PHP安全SDK(Software Development Kit)通常包含了一系列工具和函数库,旨在帮助开发者编写更安全的代码,防止常见的Web攻击,如SQL注入、XSS跨站脚本、CSRF跨站请求伪造等。而编码规范则是为了确保代码的可读性、...
### 基础的PHP安全基础 #### 一、PHP安全概述 PHP作为一种广泛使用的脚本语言,在Web开发中占据着重要地位。然而,随着互联网技术的发展与黑客攻击手段的不断升级,确保PHP应用程序的安全性变得越来越重要。下面将...
### 渗透测试相关书籍——《重燃你的PHP安全之火》知识点解析 #### 核心知识点概述 《重燃你的PHP安全之火》作为一本针对PHP代码审计入门的首选书籍,深入探讨了PHP编程中可能存在的安全隐患及其防范措施。本书...
这是一系列关于PHP安全开发的基础详解和技巧分享,对于任何PHP开发者来说,理解和掌握这些知识都是提升代码安全性的基石。 首先,我们要理解PHP安全开发的基础。这包括了解如何正确处理用户输入,因为大部分Web应用...
### PHP安全指南知识点详解 #### 一、书籍概述与作者介绍 《PHP安全指南》(Php Architects Guide To Php Security)是一本专为PHP开发者撰写的关于PHP应用安全的专业书籍。本书由Ilia Alshanetsky撰写,Rasmus ...
"PHP安全策略大集合"这个资源包显然包含了多个与PHP安全相关的教程,涵盖了如何防范各种常见的安全威胁,例如SQL注入。让我们深入探讨一下这些重要的安全概念。 1. **SQL注入**:SQL注入是最常见的Web应用安全漏洞...
下面,我们将深入探讨PHP安全相关的知识点。 首先,**后门**是指恶意攻击者在网站中植入的隐蔽代码,使得他们能够绕过正常的验证机制,获得对系统的非法访问权限。这些后门可能隐藏在源代码中,或者利用系统漏洞...
总结来说,PHP安全编码手册强调了一系列关于安全编码的最佳实践,包括了解PHP语言的基础知识,理解并合理配置安全模式,实施通用安全解决方案,谨慎处理变量,保持开发环境的清洁,以及遵守安全编码原则。...
本篇文章将详细探讨PHP安全相关的知识点,帮助开发者了解并防范常见的安全漏洞。 1. 输入验证:PHP应用中的大部分数据都来源于用户输入,如表单提交、URL参数等。为防止SQL注入、跨站脚本(XSS)攻击,必须对所有...
《PHP安全基础1-8章》是一份涵盖广泛的安全主题的教程,主要针对PHP开发者,旨在提高他们在构建Web应用程序过程中的安全性。以下是各章节主要内容的详细解析: 第一章:简介 1.1 PHP功能 PHP提供了丰富的功能,如...
国外挖来的一个文档,主要说的是PHP 安全,讲的一般,不过能开拓视野,有兴趣的朋友可以看看。
随着互联网技术的发展,网络安全问题变得越来越突出,因此,理解并掌握PHP安全基础对于任何Web开发者来说都是必不可少的。本篇将深入探讨PHP安全开发的基础知识和技巧。 首先,我们来谈谈SQL注入。这是一种常见的...