用PHP语言做网站常见漏洞有哪些?

第一:SQL注入漏洞

在进行网站开发的时候,程序员由于对用户输人数据缺乏全面判断或者过滤不严导致服务器执行一些恶意信息,比如用户信息查询等。黑客可以根据恶意程序返回的结果获取相应的信息。这就是所谓的SQL注入漏洞。

sql注入地步骤:

a)  寻找注入点(如:登录界面、留言板等)

b)  用户自己构造sql语句(如:’ or 1=1#,后面会讲解)

c)  将sql语句发送给数据库管理系统(dbms)

d)  dbms接收请求,并将该请求解释成机器代码指令,执行必要地存取操作

e)  dbms接受返回地结果,并处理,返回给用户

对SQL注入漏洞的防范

黑客进行SQL注入手段很多,而且灵活多变,但是SQL注人的共同点就是利用输入过滤漏洞。因此,要想从根本上防止SQL注入,根本解决措施就是加强对请求命令尤其是查询请求命令的过滤。具体来说,包括以下几点:

1、把过滤性语句进行参数化处理,也就是通过参数化语句实现用户信息的输入而不是直接把用户输入嵌入到语句中。

2、在网站开发的时候尽可能少用解释性程序,黑客经常通过这种手段来执行非法命令;

3、在网站开发时尽可能避免网站出现bug,否则黑客可能利用这些信息来攻击网站;仅仅通过防御SQL注入还是不够的,另外还要经常使用专业的漏洞扫描工具对网站进行漏洞扫描。

第二:脚本执行漏洞

脚本执行漏洞常见的原因是由于程序员在开发网站时对用户提交的URL参数过滤较少引起的,用户提交的URL可能包含恶意代码导致跨站脚本攻击。脚本执行漏洞在以前的PHP网站中经常存在,但是随着PHP版本的升级,这些间题已经减少或者不存在了。

对脚本执行漏洞的防范

客利用脚本执行漏洞进行攻击的手段是多种多样的,而且是灵活多变的,对此,必须要采用多种防范方法综合的手段,才能有效防止黑客对脚本执行漏洞进行攻击。这里常用的方法方法有以下四种:

1、对可执行文件的路径进行预先设定。可以通过safe_moade_exec_dir来实现;

2、对命令参数进行处理,一般用escapeshellarg函数实现;

3、用系统自带的函数库来代替外部命令;

4、在操作的时候进可能减少使用外部命令。

第三:跨网站请求伪造漏洞

CSRF(Cross Site Request Forgeries),意为跨网站请求伪造,也有写为XSRF。攻击者伪造目标用户的HTTP请求,然后此请求发送到有CSRF漏洞的网站,网站执行此请求后,引发跨站请求伪造攻击。攻击者利用隐蔽的HTTP连接,让目标用户在不注意的情况下单击这个链接,由于是用户自己点击的,而他又是合法用户拥有合法权限,所以目标用户能够在网站内执行特定的HTTP链接,从而达到攻击者的目的。

防范方法

防范CSRF要比防范其他攻击更加困难,因为CSRF的HTTP请求虽然是攻击者伪造的,但是却是由目标用户发出的,一般常见的防范方法有下面几种:

1、检查网页的来源

2、检查内置的隐藏变量

3、使用POST,不要使用GET

第四:xss跨站脚本攻击

SS(Cross Site Scripting),意为跨网站脚本攻击,为了和样式表css(Cascading Style Sheet)区别,缩写为XSS。跨站脚本主要被攻击者利用来读取网站用户的cookies或者其他个人数据,一旦攻击者得到这些数据,那么他就可以伪装成此用户来登录网站,获得此用户的权限。

跨站脚本攻击的一般步骤:

1、攻击者以某种方式发送xss的http链接给目标用户

2、目标用户登录此网站,在登陆期间打开了攻击者发送的xss链接

3、网站执行了此xss攻击脚本

4、目标用户页面跳转到攻击者的网站,攻击者取得了目标用户的信息

5、攻击者使用目标用户的信息登录网站,完成攻击

第五:session文件漏洞

Session攻击是黑客最常用到的攻击手段之一。当一个用户访问某一个网站时,为了免客户每进人一个页面都要输人账号和密码,PHP设置了Session和Cookie用于方便用户的使用和访向。

从前面的分析可以知道,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变量值。

相关参考阅读:

http://www.chinaz.com/web/2014/0320/344279.shtml

http://www.2cto.com/Article/201302/190974.html  漏洞代码分析

http://www.jb51.net/article/31898.htm PHP漏洞全解

http://jingyan.baidu.com/article/6b18230950c2c4ba59e15967.html  PHP程序的常见漏洞攻击分析

二、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配置文件中,可以通过对magic_quotes_runtime进行布尔值设置是否对外部引人的数据中的溢出字符加反斜线。为了确保网站程序在服务器的任何设置状态下都能运行。可以在整个程序开始的时候用get_magic_quotes_runtime检测设置状态决定是否要手工处理,或者在开始(或不需要自动转义的时候)用set_magic_quotes_runtime(0)关掉。

5、对文件漏洞的防范
对于PHP文件漏桐可以通过对服务器进行设置和配置来达到防范目的。这里具体的操作如下:一是把PHP代码中的错误提示关闭,这样可以避免黑客通过错误提示获取数据库信息和网页文件物理路径;二是对open_basedir尽心设置,也就是对目录外的文件操作进行禁止处理;这样可以对本地文件或者远程文件起到保护作用,防止它们被攻击,这里还要注意防范Session文件和上载文件的攻击;三是把safe-made设置为开启状态,从而对将要执行的命令进行规范,通过禁止文件上传,可以有效的提高PHP网站的安全系数。

如何防范?

http://www.jb51.net/article/29805.htm

http://netsecurity.51cto.com/art/201307/401779.htm

时间: 2024-08-06 18:41:57

用PHP语言做网站常见漏洞有哪些?的相关文章

网站常见漏洞的危害与解决方案

一.SQL注入漏洞 SQL注入漏洞的危害不仅体现在数据库层面,还有可能危及承载数据库的操作系统:如果SQL注入被用来挂马,还可能用来传播恶意软件等,这些危害包括但不限于: 1.数据库信息泄漏:数据库中存储的用户隐私信息泄露. 2.网页篡改:通过操作数据库对特定网页进行篡改. 3.网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击. 4.数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改. 5.服务器被远程控制,被安装后门:经由数据库服务器提供的操作系统支

Fckeditor常见漏洞的挖掘与利用整理汇总

查看编辑器版本 FCKeditor/_whatsnew.html ------------------------------------------------------------- 2. Version 2.2 版本 Apache+linux 环境下在上传文件后面加个.突破!测试通过. ------------------------------------------------------------- 3.Version <=2.4.2 For php 在处理PHP 上传的地方并未

Android常见漏洞

Android常见漏洞 漏洞名称: Log敏感信息泄露 漏洞描述: 程序运行期间打印了用户的敏感信息,造成泄露 修改建议: 建议禁止隐私信息的log 漏洞名称: web https校验错误忽略漏洞 漏洞描述: 漏洞可导致中间人攻击 修改建议: 建议不要忽略ssl认证错误 漏洞名称: sql注入漏洞 漏洞描述: 漏洞可能导致用户数据库中的信息泄露或者篡改 修改建议: 建议使用安全sqlite,如sqlcipher 漏洞名称: https空校验漏洞 漏洞描述: 漏洞可导致中间人攻击 修改建议: se

C语言中常见的内存错误与解决方法

常见的错误 关于内存的一些知识已在内存分配中提及,现记录与分享常见的内存错误与对策. 类型 1:内存未分配成功,却使用了它. 方   法:在使用之前检查指针是否为NULL. 1)当指针p是函数的参数时,在函数入口处用语句assert(p!=NULL)进行断言检查. 2)当使用malloc或new来申请内存时,应该用if(p != NULL)进行防错检查. 类型 2:引用了尚未初始化的指针 原   因:内存的缺省初始值究竟是什么并没有统一的标准,在使用之前都进行初始化. 1)没有初始化的观念. 2

android WebView详解,常见漏洞详解和安全源码

这篇博客主要来介绍 WebView 的相关使用方法,常见的几个漏洞,开发中可能遇到的坑和最后解决相应漏洞的源码,以及针对该源码的解析. 由于博客内容长度,这次将分为上下两篇,上篇详解 WebView 的使用,下篇讲述 WebView 的漏洞和坑,以及修复源码的解析. 下篇:android WebView详解,常见漏洞详解和安全源码(下) 转载请注明出处:http://blog.csdn.net/self_study/article/details/54928371. 对技术感兴趣的同鞋加群 54

Windows XP与Windows 7系统常见漏洞

1.Windows XP系统常见漏洞 Windows XP系统常见的漏洞有UPNP服务漏洞.升级程序漏洞.帮助和支持中心漏洞.压缩文件夹漏洞.服务拒绝漏洞.Windows Media Player漏洞.RDP漏洞.VM漏洞.热键漏洞.账号快速切换漏洞等. (1)UPNP服务漏洞 漏洞描述:允许攻击者执行任意指令. Windows XP默认启动的UPNP服务存在严重安全漏洞.UPNP(Universal Plug and Play)体系面向无线设备.PC和智能应用,提供普遍的对等网络连接,在家用信

android WebView详解,常见漏洞详解和安全源码(下)

上篇博客主要分析了 WebView 的详细使用,这篇来分析 WebView 的常见漏洞和使用的坑. 上篇:android WebView详解,常见漏洞详解和安全源码(上) 转载请注明出处:http://blog.csdn.net/self_study/article/details/55046348 对技术感兴趣的同鞋加群 544645972 一起交流. WebView 常见漏洞 WebView 的漏洞也是不少,列举一些常见的漏洞,实时更新,如果有其他的常见漏洞,知会一下我-- WebView

服务器系统及软件常见漏洞

服务器系统及软件常见漏洞 漏洞名称 允许Traceroute探测 远端WWW服务支持TRACE请求 远端WWW服务提供了对WebDAV的支持 远端WEB服务器上存在/robots.txt文件 远端VNC服务正在运行 远端HTTP服务器类型和版本信息泄漏 远端DNS服务允许递归查询 远程代理服务器允许连接任意端口 远程代理服务器接受POST请求 远程VNC HTTP服务正在运行 利用SMB会话可以获取远程域或工作组列表 利用SMB会话可以获取远程浏览列表 利用SMB会话可以获取远程共享列表 利用S

网站常见漏洞及解决方案

网站设计者在设计网站时,一般将大多数精力都花在考虑满足用户应用,如何实现业务等方面,而很少考虑网站开发过程中所存在的安全漏洞,这些漏洞在不关注网站安全的用户眼里几乎不可见,在正常的网站访问过程中,这些漏洞也不会被察觉.但对于别有用心的攻击者而言,这些漏洞很可能会对网站带来致使的伤害. 网站渗透测试,也称为网站安全检测.网站安全测试.Web安全检测.网站安全评估.网站漏洞测试等. 它是一项为了防止网站被非法入侵(如篡改网页.盗取网站数据.网站挂马),在得到用户授权后对网站进行的漏洞检测. 在网站渗