51Testing软件测试论坛

标题: xss攻击 [打印本页]

作者: tang_test    时间: 2016-5-5 22:26
标题: xss攻击
xss攻击 今天测试的时候发现总是有个弹窗口,要点击3次才能关闭,一直以为是开发忘记把测试的alter删除掉了,结果问了下有经验的人描述了这个现象原来是网站被黑了!,在了解情况后原来是有人在做安全测试。。。具体描述图解。
之后去查询了下知识,原来上个月我已经看过这部分知识,只是没有真正遇到过,原来xss攻击时这个样的,呵呵
然后自己简单的总结了下,xss工具的必要因素就是要有几个关键字,如:(<)、(>)(&)(")( ),然后黑客在访问的浏览器输入page.action?title=<script>alert(“xss”)</script>,然后就沦陷了。。。。


最后结合实际看下了,在第三页的最后一条数据中的确存在有">这种符号,形成了必要条件,然后网上查询了下,只有过滤掉这些关键字,或者在页面上转换后可以避免被攻击

这是从网上抄的哈,但是的确是这样的。。。
Html encode

       假如某些情况下,我们不能对用户数据进行严格的过滤,那我们也需要对标签进行转换。

less-than character (<)
&lt;
greater-than character (>)
&gt;
ampersand character (&)
&amp;
double-quote character (")
&quot;
space character( )
&nbsp;
Any ASCII code character whose code is greater-than or equal to 0x80
&#<number>, where <number> is the ASCII character value.
      比如用户输入:<script>window.location.href=”http://www.baidu.com”;</script>,保存后最终存储的会是:&lt;script&gt;window.location.href=&quot;http://www.baidu.com&quot;&lt;/script&gt;在展现时浏览器会对这些字符转换成文本内容显示,而不是一段可执行的代码。java的转义

private static String htmlEncode(char c) {

    switch(c) {

       case '&':

           return"&amp;";

       case '<':

           return"&lt;";

       case '>':

           return"&gt;";

       case '"':

           return"&quot;";

       case ' ':

           return"&nbsp;";

       default:

           return c +"";

    }

}





作者: lsekfe    时间: 2016-5-6 09:11
支持分享~




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2