PHP安全漏洞防范的研究.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PHP安全漏洞防范的研究

PHP安全漏洞防范的研究   【 摘 要 】 文章分别从网站开发和网站管理的角度,研究了PHP安全漏洞的防范。这样一来,只要网站开发人员和网站管理人员不同时出现工作失误,就不会发生重大网站安全事故。   【 关键词 】 PHP安全漏洞;PHP开发安全;PHP安全配置   1 引言   PHP因其功能强大、入门简单、代码执行效率高等优点,成为了Web应用开发的流行语言。由于使用广泛,所以利用PHP安全漏洞对Web网站进行的攻击也越来越多,这给Web应用的安全带来了严重威胁。   对网站的安全负有直接责任的主要有两类人员:一类是网站开发人员;一类是网站管理人员。本文分别从网站开发和网站管理的角度,对PHP安全漏洞的防范进行了较为全面的总结、研究。   2 PHP网站开发过程中产生的安全漏洞及其防范   从网站开发的角度出发,研究在程序的开发过程中,如何避免PHP安全漏洞的产生,从而开发出较为安全的PHP网站。   对以往大量攻击案例的研究表明,PHP安全漏洞的产生原因主要是没有对用户的输入进行严格的验证和对系统的输出没有进行适当的转义。用户的输入永远是不可以盲目相信的,在没有进行验证前,都可以认为是被污染数据。系统的输出在没有适当转义前,也有可能带来较大的安全风险。   2.1 未对用户输入进行严格验证产生安全漏洞及其防范   考虑一个系统的登录验证,此系统要求用注册时所填的邮箱和密码登录。一般情况下,只要输入正确即可登录,如果输入错误则不允许登录,这是通常的处理流程。其程序实现一般是,通过一个登录表单获取用户输入的邮箱和密码,然后传递给程序以构造一个SQL查询语句,例如:select count(*) from users where email=myemail@163.com and password=mypass,再将此SQL语句提交给后台数据库执行,若返回的记录数为0,则说明输入的邮箱信息或密码有误或用户根本没有注册,系统拒绝其登录,反之则为合法用户,允许其登录。这套验证流程对于一般的客户是十分奏效的,其若没有注册亦或没有输入正确的邮箱和密码都是不能登录系统的。但对于黑客来说,情况就不一样了。其完全可以精心设计一个字符串来代替合法邮箱地址从而绕过系统的验证,例如:若黑客输入的邮箱地址是“myemail or 1=1--”、密码是“myppass”,此时,SQL语句变为:select count(*) from users where email=myemail or 1=1-- and password=mypass,此语句执行后所返回的记录数是users表的所有记录总数,并不为0,所以通过了系统的登录验证,系统允许其登录。这就是著名的SQL注入攻击。导致这个后果的原因是黑客精心构造了一个字符串用于代替合法邮箱地址且系统并未对用户输入的数据本身进行合法性检查。   为了对上述PHP安全漏洞进行防范,我们可以对用户的输入进行合法性验证。   此处要求输入的是邮箱地址,为了对用户输入的数据本身进行合法性检查,我们可以用正则表达式对用户输入的邮箱地址进行验证,看是否符合正确的邮箱格式,这样就可以大大增加黑客设计特殊字符串的难度,在一定程度上防止SQL注入漏洞的产生。   在任何情况下,如果对用户的输入均进行严格的验证(当然,验证方法根据不同情况而有所不同,并不局限于正则表达式),这就可以在很大程度上对PHP安全漏洞进行防范。   2.2 未对系统的输出进行适当转义产生安全漏洞及其防范   未对系统的输出进行适当转义也会产生安全漏洞,跨站脚本漏洞就是一个很著名的例子。假设有一个可以发表评论的系统,其采用表单的形式进行数据提交。对于一般用户,这不会有什么太大问题,但是对于黑客,问题就来了。因为黑客并不是真的想发表什么评论,其有可能是想盗取其他登录用户的cookies。为了盗取其他登录用户的cookies,黑客可以将如下Javascript代码作为评论内容进行提交:      document.location = http:///hook.php?cookies=+document.cookie      如果在输出前对黑客所提交的内容不做任何转义的话,那么此段Javascript代码将被其他用户的浏览器所执行,从而将浏览评论的其他登录用户的cookies发送到http:///hook.php,黑客只要利用$_GET[cookies]就可以获取到盗窃的cookies了。   这就是跨站脚本漏洞的一个经典攻击实例。   为了防范上述跨站脚本漏洞攻击,我们所要采取的措施很简单:在将评论内容输出到客户端浏览器之前,利用htmlentities()函数对输出内容进行转义。此函数可以将输出内容中可能

文档评论(0)

3471161553 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档