- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于PHP环境开发安全Web程序.doc
基于PHP环境开发安全Web程序
【 摘 要 】 Web程序安全备受世人关注,但安全性涉及到程序的开发设计、运营等各方面。论文利用PHP语言,从SQL注入、客户端脚本注入和Session安全等方面,深入探讨了在程序设计方面如何有针对性地增强安全防护能力。
【 关键词 】 PHP;SQL注入;Session;脚本植入攻击
【 Abstract 】 The security of Web application has widely concerned, but security involved in the development design operation and so on.This paper, by using the PHP language, from SQL injection, the client script injection and session security thoroughly discusses how to targeted on program design ability of security protection.
【 Keywords 】 php; sql injection; session; script insertion
1 引言
安全性在网络环境中一直备受人们重视,但这个世界“矛和盾”的竞争始终没有停止过,“入侵与反入侵”每天也在上演。那么如何才能避免自己的Web程序免遭、或者少遭受一些攻击从而把潜在的损失降到最低,是摆在每个Web程序设计人员面前的一道不得不面对的课题。
2 开发安全的Web程序
2.1 过滤输入的数据
2.1.1防范攻击类型:脚本注入和SQL注入攻击
在设计网页时,程序开发者应考虑到用户在网页表单中可能会输入任意形式的字符串,更有甚者,黑客可能会提交恶意代码,从而造成恶劣后果。例如在Web网页留言板中,会让用户填写留言信息并提交,此时如果输入以下代码而没有进行敏感字符相应过滤,则当浏览这条消息后页面会马上跳转:
开个小玩笑document.location=http://;
假如跳转后的页面加载了病毒或者木马,那么使用者很可能会遭受攻击。
动态网站都采用数据库技术,如果没有对SQL语句进行仔细检查和处理,黑客很可能利用在客户端网页中输入数据的功能。如在会员登录页面中输入某些关键字和字符串,组合成能够操纵数据库的语句,从而对网站造成破坏或者入侵。
2.1.2防范方法:过滤输入数据
(1)数字数据的过滤。在Web程序中,使用GET、POST、Cookie传递参数,最后一定是字符串的形式,若这些参数是整数但使用字符串来传递,不但没有效率而且非常危险。如果可以确定输入的数据一定是数字,则可以使用数据类型转换的方式将输入的数据强制转换成数字格式,从而堵塞恶意代码的提交和执行。
方法一:用数据类型进行强制转换。
if(!empty($_GET[id]) )
{ $id = (int) $_GET[id]; // $id = (float) $_GET[id];}
方法二:使用intval、floatval函数转换。
$id = intval($_GET[id]); 或者 $id = floatval($_GET[id])。
(2)字符串数据的过滤。字符串在程序中非常常见,所以对其处理也就更加重要。PHP提供了以ctype_开头的一系列函数来验证字符串内容,如ctype_alnum用来检查是否包含字母或者数字、ctype_alpha用来检查是否只包含字母、ctype_digit用来检查是否只包含数字等,可以灵活运用这些函数验证字符串是否合法。
示例代码如下:
if(!ctype_alnum($_GET[username]) ) //检查用户名是否为数字和字母组成。
2.2 HTML与PHP标签的过滤
2.2.1防范攻击类型:客户端脚本植入攻击
(1)客户端脚本攻击(Script Insertion)是指将可以执行的脚本插入到表单、图片、动画、超链接文字等对象中,当用户打开这些对象后,植入的脚本就会被执行。可以用作脚本植入攻击的HTML标签主要有几个。
标签。在标签中可以执行Javascript和VBscript等页面脚本程序,也可以在src属性中指定Javascript文件的URL路径。
标签。该标签内的对象通常是Java Applet、多媒体文件及ActiveX控件等,在其data属性中可以指定对象的URL路径。
标签。该标签内的对象通常为多媒体,通过src属性指定对象的UR
文档评论(0)