web应用安全之XSS基础

来源:互联网 发布:linux特点 编辑:程序博客网 时间:2024/04/28 10:04

  XSS概要

  在WEB应用的网页中,有些部分的显示内容会依据外界输入值而发生变化,而如果生成这些的HTML程序中存在问题,就会滋生名为(Cross-Site Scripting)的安全隐患。

  风险:
  1.用户浏览器中运行攻击者的恶意脚本从而导致Cookie信息被窃取,用户身份被冒名顶替。
  2.攻击者能获得用户的权限来恶意使用Web应用的功能。
  3.向用户显示伪造的输入表单,通过钓鱼式攻击窃取用户的个人信息。

  窃取Cookie

  搜索页面可用=<script>alert(document.cookie)</script>显示会话ID(PHPSESSID)来判断搜索页面是否有XSS。

  然而获得自己的会话ID并无太大意义,攻击者通常将存在隐患的网站的用户引诱到恶意网站。

  举例,恶意网站的HTML使用iframe元素来显示存在隐患网站的页面,并对其实施XSS攻击,存在隐患的网站用户只要浏览了该恶意网站,浏览器中iframe里面的页面就会收到XSS攻击。
  
  一般架构
  1.恶意网站的iframe中显示出存在隐患的网站。
  2.存在隐患的网站遭受攻击后,Cookie值被添加到URL的查询字符串中,页面跳转到信息收集页面。
  3.信息收集页面将接收到的Cookie值通过邮件发送给攻击者。mb_send_mail.

  通过JavaScript攻击

  在窃取Cookie的攻击手段中,仅限于支持会员登录的网站。其实,没有登录功能的网站同样也会遭受XSS攻击。

  篡改网页,恶意网页通过一些步骤篡改网页。

  举例步骤如下:
  1.使用</form>使原先页面form元素结束。
  2.添加新的form元素,并制定style如下。
     通过指定绝对坐标将form的位置定于左上角。
     将z-index设置为很大的值(99),确保其堆叠顺序在原先form前面。
     将背景色设为白色,从而隐藏原先的form。
  3.将action的URL设为恶意网站。

  对策总结

   1.根本性对策

  HTML的元素内容 。
  使用htmlspecialchars函数转义。
  最低限度防范策略。
  1.元素内容中转义<和&。
  2.属性值用双引号括起来,并转义<和"和&。

   2.根本性策略

  明确设置HTTP响应的字符编码。
  header('Content-Type: text/html; charset=UTF-8');

   3.辅助对策

  输入校验
 
  给Cookie添加HttpOnly属性
  使用PHP开发应用时,给会话ID添加HttpOnly属性,可以再php.ini中做出如下设置。
  session.cookie_httponly = On
  该属性禁止JavaScript读取Cookie值。

  关闭TRACE方法

  这是跨站追踪XST的攻击的防范策略。XST指利用JavaScript发送HTTP的TRACE方法来窃取Cookie值或Basic认证密码的攻击手段。

  不过XST利用的是XSS漏洞,所以只要消除了XSS漏洞就能保证。
  实际上主流浏览器都已经自己防御XST。
  在Apache中,关闭TRACE方法,可以再httpd.conf中设置:
  TraceEnable off


0 0
原创粉丝点击