欢迎来到天天文库
浏览记录
ID:37178142
大小:36.01 KB
页数:5页
时间:2019-05-21
《php安全问题入门》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、PHP安全问题入门有时候,您的业务可能涉及到PHP应用程序的安全性。当您遇到审计任务时,您知道如何执行查找吗?本系列将带您进入PHP,并帮您在一定程序上了解它,让您在进行安全审计时知道查找什么。第1部分向您介绍register_globals设置。 入门知识 我在此假定您对PHP的语法有一个大致的了解,至少能够编写“HelloWorld”之类的程序。如果您不具备基础知识,则请首先学习PHP手册和某些基本的PHP教程(参阅参考资料)。很多出版商都有关于PHP的好书。建议初学者一开始先看看入门书籍或食谱形式的书籍。 在生产环境的准确副本上执行审计。您不需要复制硬件
2、,但是需要确保软件版本尽量和实际的完全一样。PHP配置必须精确匹配,这一点在php.ini文件中、在.htaccess文件的Apache指令中或在httpd.conf中已经指定。您需要准备一个单独的环境,因为您将显示和记录可能包含敏感的密码及其他信息的错误。此外,您将尝试中断站点的安全性,这一点是您在活动应用程序中极力避免的。 第一步是将PHP的error_reporting设置更改为E_ALL。设置更改后,每当使用未初始化的变量、进行错误的文件访问及发生其他(大多数)无害错误时,PHP都会报告一条警告消息,但也存在这是一个潜在攻击矢量的可能性。这些错误一般情况下只是表明
3、编程草率,所以如果这是您的代码,您把它们清除掉即可。 该设置如下所示: error_reporting=E_ALL 如果您不知道php.ini文件在哪里,则可以通过创建包含以下文本的.php脚本来查找:
4、ni是大多数Microsoft?Windows?系统上的公共位置。如果该文件不存在,则创建一个并在文件中键入上面的error_reporting行即可。修改php.ini文件后,需要重启Web服务器,PHP才能启用新设置。 如果您以前没有创建phpinfo()页面,则可以现在创建。第二个主要部分的标签是“配置”,它包含许多关于如何设置PHP的有用信息。该部分包括三列:设置名称、本地值和xmaster值。主值是通过php.ini指令为您机器上的所有PHP脚本全局设置的值。本地值是对当前脚本生效的值。对它有影响的有:.htaccess设置、httpd.conf的5、on>或部分中的设置和PHP脚本中的ini_set调用。在运行时,只有某些设置是可更改的。请参阅参考资料中的PHP手册以获取详细信息。 还需要自定义的另外两种设置是display_errors和log_errors。您至少需要启用这两种设置中的一种,或者两种都启用。log_errors通知PHP将注意、警告或错误记录在文件中,display_errors将这些被记录下来的注意、警告和错误显示在屏幕上。它们不互相排斥。至少启用它们中的一个,可以有效地发现可能导致安全漏洞的编程错误。 应该查找哪些种类的安全问题? 值得庆幸的是,导致安全漏洞的6、很多编程错误在PHP中不可能存在。堆栈和缓冲溢出是C和C++环境中两个常见的问题。因为PHP可以为您管理记忆,所以PHP代码不会导致堆栈和缓冲溢出。 然而,PHP本身也是使用C语言编写的,有时记忆问题深至PHP的核面。因此,您需要时时关注安全公报和更新。PHP在其Web站点(参见参考资料)公布新PHP版本并说明是否包含安全修补程序。 PHP应用程序中的大多数问题与使用用户提供的数据有关,在使用它和对它执行操作前未曾预先验证和消毒。您可能听说过称为cross-sitescripting(XSS)的漏洞。XSS通过提供程序不期望的输入,然后利用程序对无赖输入的处理方式发7、动进攻。编写良好的程序可以避免这些假定。在机场安全方面,PHP程序用于检查旅客的行李。 其他问题是一些细微的逻辑错误。例如,检查一系列参数,看看是否批准某个用户访问某种资源、是否把括弧放错位置以至于某些用户进入了他们原本不该到的地方。我们希望您的应用程序组织良好并具有这种集中式逻辑。 识别用户输入 最棘手的一件事情是如何从外部源(如某个用户、别的Web站点或某些其他资源)和已经验证的数据中区分出不受信任的输入。有人提出了“不相信一切”的观点,即不管来自何处,对于所有函数都要
5、on>或部分中的设置和PHP脚本中的ini_set调用。在运行时,只有某些设置是可更改的。请参阅参考资料中的PHP手册以获取详细信息。 还需要自定义的另外两种设置是display_errors和log_errors。您至少需要启用这两种设置中的一种,或者两种都启用。log_errors通知PHP将注意、警告或错误记录在文件中,display_errors将这些被记录下来的注意、警告和错误显示在屏幕上。它们不互相排斥。至少启用它们中的一个,可以有效地发现可能导致安全漏洞的编程错误。 应该查找哪些种类的安全问题? 值得庆幸的是,导致安全漏洞的
6、很多编程错误在PHP中不可能存在。堆栈和缓冲溢出是C和C++环境中两个常见的问题。因为PHP可以为您管理记忆,所以PHP代码不会导致堆栈和缓冲溢出。 然而,PHP本身也是使用C语言编写的,有时记忆问题深至PHP的核面。因此,您需要时时关注安全公报和更新。PHP在其Web站点(参见参考资料)公布新PHP版本并说明是否包含安全修补程序。 PHP应用程序中的大多数问题与使用用户提供的数据有关,在使用它和对它执行操作前未曾预先验证和消毒。您可能听说过称为cross-sitescripting(XSS)的漏洞。XSS通过提供程序不期望的输入,然后利用程序对无赖输入的处理方式发
7、动进攻。编写良好的程序可以避免这些假定。在机场安全方面,PHP程序用于检查旅客的行李。 其他问题是一些细微的逻辑错误。例如,检查一系列参数,看看是否批准某个用户访问某种资源、是否把括弧放错位置以至于某些用户进入了他们原本不该到的地方。我们希望您的应用程序组织良好并具有这种集中式逻辑。 识别用户输入 最棘手的一件事情是如何从外部源(如某个用户、别的Web站点或某些其他资源)和已经验证的数据中区分出不受信任的输入。有人提出了“不相信一切”的观点,即不管来自何处,对于所有函数都要
此文档下载收益归作者所有