欢迎来到天天文库
浏览记录
ID:34436390
大小:355.78 KB
页数:43页
时间:2019-03-06
《php安全基础详解》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《PHP安全基础详解》www.528163.cn提供《PHP安全基础详解》www.528163.cn提供《PHP安全基础详解》www.528163.cn提供第一章简介PHP已经由一个制作个人网页的工具发展成为了世界上最流行的网络编程语言。它保证了许多网络上最繁忙的站点的运行。这一转变带来了亟待关注的问题,那就是性能、可维护性、可测性、可靠性以及最重要的一点—安全性。与语言的一些功能如条件表达式、循环结构等相比,安全性更为抽象。事实上,安全性更像是开发者的特性而不是语言的特性。任何语言都不能防止不安全的代码,尽管语言的有些特点能对有
2、安全意识的开发人员有作用。本书着眼于PHP语言,向您展示如何通过操纵PHP一些特殊的功能写出安全的代码。本书中的概念,适用于任何网络开发平台。网络应用程序的安全是一门年轻的和发展中的学科。本书会从理论出发,教会您一些好的习惯,使您能安枕无忧,从容应对恶意者层出不穷的新的攻击和技巧。本章是本书的基础部分。作为学习后续章节的前提,将教给您一些原则和经验。1.1.PHP功能PHP有许多适合于WEB开发的功能。一些在其它语言中很难实现的普通工作在PHP中变得易如反掌,这有好处也有坏处。有一个功能比其它功能来更引人注目,这个功能就是regi
3、ster_globals。1.1.1.全局变量注册如果您还能记起早期WEB应用开发中使用C开发CGI程序的话,一定会对繁琐的表单处理深有体会。当PHP的register_globals配置选项打开时,复杂的原始表单处理不复存在,公用变量会自动建立。它让PHP编程变得容易和方便,但同时也带来了安全隐患。事实上,register_globals是无辜的,它并不会产生漏洞,同时还要开发者犯错才行。可是,有两个主要原因导致了您必须在开发和布署应用时关闭register_globals:第一,它会增加安全漏洞的数量;第二,隐藏了数据的来源,
4、与开发者需要随时跟踪数据的责任相违背。《PHP安全基础详解》www.528163.cn提供本书中所有例子都假定register_globals已被关闭,用超级公用数组如$_GET和$_POST取而代之。使用这些数组几乎与register_globals开启时的编程方法同样方便,而其中的些许不便是值得的,因为它提高了程序的安全性。小提示如果您必须要开发一个在register_globals开启的环境中布署的应用时,很重要的一点是您必须要初始化所有变量并且把error_reporting设为E_ALL(或E_ALL
5、E_STRICT)
6、以对未初始化变量进行警告。当register_globals开启时,任何使用未初始化变量的行为几乎就意味着安全漏洞。1.1.2.错误报告没有不会犯错的开发者,PHP的错误报告功能将协助您确认和定位这些错误。可以PHP提供的这些详细描述也可能被恶意攻击者看到,这就不妙了。使大众看不到报错信息,这一点很重要。做到这一点很容易,只要关闭display_errors,当然如果您希望得到出错信息,可以打开log_errors选项,并在error_log选项中设置出错日志文件的保存路径。由于出错报告的级别设定可以导致有些错误无法发现,您至少需
7、要把error_reporting设为E_ALL(E_ALL
8、E_STRICT是最高的设置,提供向下兼容的建议,如不建议使用的提示).所有的出错报告级别可以在任意级别进行修改,所以您如果使用的是共享的主机,没有权限对php.ini,httpd.conf,或.htaccess等配置文件进行更改时,您可以在程序中运行出错报告级别配置语句:
9、E_STRICT);ini_set('display_errors','Off');ini_set('log_errors',
10、'On');ini_set('error_log','/usr/local/apache/logs/error_log');?>小提示http://php.net/manual/ini.php对php.ini的选项配置作了详尽的说明。PHP还允许您通过set_error_handler()函数指定您自已的出错处理函数:上面程序指定了您自已的出错处理函数my_error_handler();下面是一个实《PHP安全基础详解》www.528163
11、.cn提供际使用的示例:
此文档下载收益归作者所有