PHP⽹站常见安全漏洞及防御⽅法
本⽂笔者重点从PHP⽹站攻击与安全防范⽅⾯进⾏探究,旨在减少⽹站漏洞,希望对⼤家有所帮助!
⼀、常见PHP⽹站安全漏洞编程php语言
对于PHP的漏洞,⽬前常见的漏洞有五种。分别是Session⽂件漏洞、SQL注⼊漏洞、脚本命令执⾏漏洞、全局变量漏洞和⽂件漏洞。这⾥分别对这些漏洞进⾏简要的介绍。
1、session⽂件漏洞
Session攻击是⿊客最常⽤到的攻击⼿段之⼀。当⼀个⽤户访问某⼀个⽹站时,为了免客户每进⼈⼀个页⾯都要输⼈账号和密码,PHP设置了Session和Cookie⽤于⽅便⽤户的使⽤和访向。
2、SQL注⼊漏洞
在进⾏⽹站开发的时候,由于对⽤户输⼈数据缺乏全⾯判断或者过滤不严导致服务器执⾏⼀些恶意信息,⽐如⽤户信息查询等。⿊客可以根据恶意程序返回的结果获取相应的信息。这就是⽉⾏胃的SQL注⼊漏洞。
3、脚本执⾏漏洞
脚本执⾏漏洞常见的原因是由于程序员在开发⽹站时对⽤户提交的URL参数过滤较少引起的,⽤户提交的URL可能包含恶意代码导致跨站脚本攻击。脚本执⾏漏洞在以前的PHP⽹站中经常存在,但是随着PHP版本的升级,这些间题已经减少或者不存在了。
4、全局变量漏洞
PHP中的变量在使⽤的时候不像其他开发语⾔那样需要事先声明,PHP中的变量可以不经声明就直接使⽤,使⽤的时候系统⾃动创建,⽽且也不需要对变量类型进⾏说明,系统会⾃动根据上下⽂环境⾃动确定变量类型。这种⽅式可以⼤⼤减少程序员编程中出错的概率,使⽤起来⾮常的⽅便。
5、⽂件漏洞
⼆、PHP常见漏洞的防范措施
1、对于Session漏洞的防范
从前⾯的分析可以知道,Session攻击最常见的就是会话劫持,也就是⿊客通过各种攻击⼿段获取⽤户的Session ID,然后利⽤被攻击⽤户的⾝份来登录相应⽹站。为此,这⾥可以⽤以下⼏种⽅法进⾏防范:⼀是定期更换Session ID,更换Session ID可以⽤PHP⾃带函数来实现;⼆是更换Session名称,通常情况下Session的默认名称是PHPSESSID,这个变量⼀般是在cookie中保存的,如果更改了它的名
称,就可以阻档⿊客的部分攻击;三是对透明化的Session ID进⾏关闭处理,所谓透明化也就是指在http请求没有使⽤cookies来制定Session id 时,Sessioin id使⽤链接来传递.关闭透明化Session ID可以通过操作PHP.ini⽂件来实现;四是通过URL传递隐藏参数,这样可以确保即使⿊客获取了session数据,但是由于相关参数是隐藏的,它也很难获得Session ID变量值。
2、对SQL注⼊漏洞的防范
⿊客进⾏SQL注⼊⼿段很多,⽽且灵活多变,但是SQL注⼈的共同点就是利⽤输⼊过滤漏洞。因此,要想从根本上防⽌SQL注⼊,根本解决措施就是加强对请求命令尤其是查询请求命令的过滤。具体来说,包括以下⼏点:⼀是把过滤性语句进⾏参数化处理,也就是通过参数化语句实现⽤户信息的输⼊⽽不是直接把⽤户输⼊嵌⼊到语句中。⼆是在⽹站开发的时候尽可能少⽤解释性程序,⿊客经常通过这种⼿段来执⾏⾮法命令;三是在⽹站开发时尽可能避免⽹站出现bug,否则⿊客可能利⽤这些信息来攻击⽹站;仅仅通过防御SQL注⼊还是不够的,另外还要经常使⽤专业的漏洞扫描⼯具对⽹站进⾏漏洞扫描。
3、对脚本执⾏漏洞的防范
⿊客利⽤脚本执⾏漏洞进⾏攻击的⼿段是多种多样的,⽽且是灵活多变的,对此,必须要采⽤多种防范⽅法综合的⼿段,才能有效防⽌⿊客对脚本执⾏漏洞进⾏攻击。这⾥常⽤的⽅法⽅法有以下四种。
⼀是对可执⾏⽂件的路径进⾏预先设定。可以通过safe_moade_exec_dir来实现;⼆是对命令参数进⾏处理,⼀般⽤escapeshellarg函数实现;三是⽤系统⾃带的函数库来代替外部命令;四是在操作的时候进可能减少使⽤外部命令。
4、对全局变量漏洞防范
对于PHP全局变量的漏洞问题,以前的PHP版本存在这样的问题,但是随着PHP版本升级到5.5以后,可以通过对php.ini的设置来实现,设置ruquest_order为GPC。另外在php.ini配置⽂件中,可以通过对_quotes_runtime进⾏布尔值设置是否对外部引⼈的数据中的溢出字符加反斜线。为了确保⽹站程序在服务器的任何设置状态下都能运⾏。可以在整个程序开始的时候⽤get_magic_quotes_runtime检测设置状态决定是否要⼿⼯处理,或者在开始(或不需要⾃动转义的时候)⽤set_magic_quotes_runtime(0)关掉。
5、对⽂件漏洞的防范
对于PHP⽂件漏桐可以通过对服务器进⾏设置和配置来达到防范⽬的。这⾥具体的操作如下:⼀是把PHP代码中的错误提⽰关闭,这样可以避免⿊客通过错误提⽰获取数据库信息和⽹页⽂件物理路径;⼆是对open_basedir尽⼼设置,也就是对⽬录外的⽂件操作进⾏禁⽌处理;这样可以对本地⽂件或者远程⽂件起到保护作⽤,防⽌它们被攻击,这⾥还要注意防范Session⽂件和上载⽂件的攻击;三是把sa
fe-made设置为开启状态,从⽽对将要执⾏的命令进⾏规范,通过禁⽌⽂件上传,可以有效的提⾼PHP⽹站的安全系数。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。