如何从网站开发角度提高php安全漏洞的防范

  目前PHP因其功能强大、入门简单、代码执行效率高等优点,成为了Web应用开发的流行语言。由于使用广泛,所以利用PHP安全漏洞对Web网站进行的攻击也越来越多,这给Web应用的安全带来了严重威胁。对网站的安全负有直接责任的主要有两类人员:一类是网站开发人员;一类是网站管理人员。本文笔者就从网站开发的角度,对PHP安全漏洞的防范进行了较为全面的总结、研究。

  对以往大量攻击案例的研究表明,PHP安全漏洞的产生原因主要是没有对用户的输人进行严格的验证和对系统的输出没有进行适当的转义。用户的输入永远是不可以盲目相信的,在没有进行验证前,都可以认为是被污染数据。系统的愉出在没有适当转义前,也有可能带来较大的安全风险。

  1、未对用户输入进行严格验证产生安全漏洞及其防范

  考虑一个系统的登录验证,此系统要求用注册时所填的邮箱和密码登录。一般情况下,只要输入正确即可登录,如果输人错误则不允许登录,这是通常的处理流程。其程序实现一般是,通过一个登录表单获取用户输入的邮箱和密码,然后传递给程序以构造一个SQL查询语句,例如:select count(*)from users where email='myemail@163.com'and password='mypass',再将此SQL语句提交给后台数据库执行,若返回的记录数为0,则说明输人的邮箱信息或密码有误或用户根本没有注册,系统拒绝其登录,反之则为合法用户,允许其登录。这套验证流程对于一般的客户是十分奏效的,其若没有注册亦或没有袖人正确的邮箱和密码都是不能登录系统的。但对于黑客来说,情况就不一样了。其完全可以精心设计一个字符串来代替合法邮箱地址从而绕过系统的验证,例如:若黑客输人的邮箱地址是“myemail"orI=I--"、密码是"myppass",此时SQL语句变为select count(*)from users wherer email='myemail' or I=I--" and password='mypass' ,此语句执行后所返回的记录数是users表的所有记录总数,并不为0,所以通过了系统的登录验证,系统允许其登录。这就是著名的SQL注入攻击。导致这个后果的原因是黑客精心构造了一个字符串用于代替合法邮箱地址且系统并未对用户输入的数据本身进行合法性检查。

  为了对上述PHP安全漏洞进行防范,我们可以对用户的输人进行合法性验证。此处要求入的是邮箱地址,为了对用户输入的数据本身进行合法性检查,我们可以用正则表达式对用户输人的邮箱地址进行验证,看是否符合正确的邮箱格式,这样就可以大大增加黑客设计特殊字符串的难度,在一定程度上防止SQL注人漏洞的产生。

  在任何悄况下,如果对用户的输人均进行严格的验证,当然,验证方法根据不同情况而有所不同,并不局限于正则表达式,这就可以在很大程度上对PHP安全漏洞进行防范。

  2、未对系统的输出进行适当转义产生安全漏洞及其防范

  未对系统的输出进行适当转义也会产生安全漏洞,跨站脚本漏洞就是一个很著名的例子。假设有一个可以发表评论的系统,其采用表单的形式进行数据提交。对于一般用户,这不会有什么太大间题,但是对于黑客,问题就来了。因为黑客并不是真的想发表什么评论,其有可能是想盗取其他登录用户的cookies。为了盗取其他录用户的cookies, 黑可以将javascript代码作为评论内容进行提交。

  如果在输出前对黑客所提交的内容不做任何转义的话,那么lavascript代码将被其他用户的浏览器所执行,从而将浏览评论的其他登录用户的cookies信息发送到黑客手上。为了防范上述跨站脚本漏洞攻击,我们所要采取的措施很简单:在将评论内容输出到客户端浏览器之前,利用htmlentities()函数对输出内容进行转义。此函数可以将输出内容当中可能包含的html标签转换成html实体,从而使得黑客输入的Javascript代码不被执行。

  任何情况下,对于系统的输出都应该进行适当的转义(转义方法根据不同情况而有所不同,并不局限于htmlentities()函数),这样才不会让黑客有机可乘。

  声明:本文由郑州批发市场:http://www.shun-e.com/market/ 原创投稿,尊重他人成果,转载请注明出处!

时间: 2024-10-30 10:15:09

如何从网站开发角度提高php安全漏洞的防范的相关文章

从设计师的角度浅谈网站开发

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 公司开发了一套新的系统,但界面看上去并不是太友好,这个方面就成了我的工作,面对N个界面设计,N个杂碎页面的整理,还合着很多策划和用户体验的东西,确实头疼了,还好的是已经完成了,简单的总结下吧. 珠海网站开发中设计师的工作流程 1.准备阶段:查看并熟悉统相关的文档,对系统的工作流,面对对象,用户体验等有个大致的把握和了解,不至于设计时钻牛角尖,

电商网站Web设计提高用户体验度的九个要点

无论是传统商业时代还是互联网电商时代,提高用户的极致体验都是达成营销盈利目标的重要行动.而对于电商而言,Web设计的核心与目标就是以用户为中心,追求极致的用户体验,并完成其本身所承载的商业或用户诉求等目标. 互联网时代,电商网站Web设计提高用户体验度有以下九个要点: 一.网站定位 首先,你应该确定你的网站的用户群有哪些,是否承载电子商务功能单位,是否满足在线购物需求等等.传统的电商网站页面颜色过于单调.布局太过传统且整体缺乏活力,只是满足官网的定位,但是却无法满足电子商务的网站需求.因此,这时

无障碍网站开发工具

本文讲的是无障碍网站开发工具, 构建一个无障碍网站对于像我这样从没用过任何辅助性技术的开发人员来说非常的具有挑战性.可及性问题不像布局等可视问题一样那么容易被发现,如果我们没有用合适的工具测试,它很容易就会被忽视掉. 可及性设计并不是一定要做得完美无缺,它只需日渐精进就够了. Leonie Watson at FronteersConf 有一些我经常使用并且对可及性开发大有裨益的工具,我想应该和大家一起分享.由于我大部分开发都基于 Chrome,所以这些工具更适用于 Chrome. Access

从网站“优化”角度分析产品页面设计需要注意哪些要点

中介交易 SEO诊断 淘宝客 云主机 技术大厅 其实说实话做网站不在乎规模的大小,并不是说草根站长就不能创造奇迹,想想自己做目前这个网站一年多了,很多关键词也做到了相关理想的位置,盈利自然水到渠成,有的朋友就会问我为什么他们的网站坚持不下去呢?有时候问题出在站长自身,你把网站当回事,网站自然把你当回事,虽然是中小型网站,我们一样要细心地设计产品页面,只有这样才会让自己的网站得到长远的发展. 就像笔者之前说的"从网站优化角度分析"一样,下面我们就从搜索引擎的视觉解释一下产品页面布局的相关

商业型交互式网站开发

中介交易 SEO诊断 淘宝客 云主机 技术大厅 一.网站定位 首先,我们应该清楚自己做的网站的属性,比如针对哪个行业而设计的,当然前提其次是你必须清楚该行业网站所需要的一些特定的网站功能,比如像电子商务型的网店最基础的功能则是完整的商品展示系统和强大的在线交易系统.其次还要根据网站具体的适用范围适当得开发相应的增值功能,比如如果是为某书友会开发的电子商务型的网店程序,那么我们就应该在常规网店程序的基础上整合会员管理系统.有条件的甚至可以根据自己的的经营体系开发出相应的功能,这样便更能吸引访问者对

网站开发收费范围和效果对比方法--看以下几点!

做网站技术标准好坏-对比 还有很多重点内容.有需要交流的朋友加我Q89731255 1.  ★好的公司开发网站全部采用国际上现最先进的NET语言和PHP语言做网站核心开发语言.是现在大型门户网站开发通用的核心技术语言.并会发展为企业网站将来的主流开发技术.同时我们应用NET开发的网站全部采用动态生成静态页面技术HTML.这样有利于搜索类网站如百度.google.雅虎收录和增加google评分等等,可以更容易让网民搜索本网站产品时近可能排在前列起到真正的网络推广作用,同时可提高网站的显示速度. N

Nurun中国敏捷开发(Agile方法)打造网站开发新记录

巴黎欧莱雅在中国的首个电子商务平台的发布只用了破纪录的4个月!魅力惠中国网站打破新纪录-耗时仅5周! 从概念设计到完成开发,理论上需要16-18个月,Nurun中国只用了4个月就做到了.通过使用敏捷开发(Agile方法)配合公司的内部技术,Nurun成功地在极短的时间内为巴黎欧莱雅集团以及旗下奢侈品品牌发布了2个主要平台,而中国的魅力惠网站,通过使用敏捷开发(Agile方法),将原本需要4-5个月的开发时间缩短到了5周. 中国是全球增长最快的奢侈品消费市场,年增长率在20%-30%,位列世界第三

SEO如何压缩网站,实现提高网页的打开速度

摘要: 如今的SEO,早已不是简单的发发外链.调整下站内结构把排名做上去就了事的了.SEO追求的是精准流量,其最终目的是要使这些精准流量能带来订单.而网民的耐心往往却没有那么好, 如今的SEO,早已不是简单的发发外链.调整下站内结构把排名做上去就了事的了.SEO追求的是精准流量,其最终目的是要使这些精准流量能带来订单.而网民的耐心往往却没有那么好,如果网页打开速度慢,则很有可能导致网民连网页都没有完全下载和打开就已经把它给关闭了.所以,在当今的网络营销中,网页压缩很是重要.今天上海SEO顾辉明就

如何选择用什么语言进行网站开发

对于很多企业或者需要建站的个人来说,如何选择一个开发语言来进行网站开发是大家经常考虑的问题.很多行外的都是这样子跟我说,我要你们最先进的语言来进行开发,要最厉害的.其实对于我们来说,没有最先进的语言来说,只有最合适的语言.   什么是最合适的语言,是相对你要进行开发的内容是什么?你要达到什么目的或者说效果,你的侧重点在于哪里?有人曾经跟我说他要开发一个他们公司的企业网站,他说停别说都是Java好,是不是用Java开发的对他们来说比较好.我告诉他,Java是能开发的,Java确实是稳定性.安全性方