论坛首页 Java企业应用论坛

XSS漏洞处理

浏览 13228 次
锁定老帖子 主题:XSS漏洞处理
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-08-18  
核桃博客 写道
int08h 写道
核桃博客 写道
赞同,
不过话说很多网站需要提供可视化编辑或者html编辑,bbcode不一定完全满足需求,
这个时候就可以使用我的hetaoblogxsshtmlfilter项目对输入的html做白名单验证

如果我有决定权的话,我会扩展BBCode,而不是开放全部的HTML再过滤……BBCode和HTML长得还是很像的,扩展其实容易

orz,
话说你后台怎么验证输入的是bbcode和合法内容?请求可以随便造,随便一个input都可以发送html过来

请看前面的贴子,BBCode的处理流程:
1、获取用户输入
2、把用户输入进行Encode,比如<a>abc</a>在这一步后会变成&lt;a&gt;abc&lt;/a&gt;,这一步以后已经没有HTML代码了,这个内容是“绝对安全”的
3、针对这个Encode后的内容,进行BBCode解析,如把\[b\]abc[/b]替换成<strong>abc</strong>

注意第3步,他只对系统允许的BBCode标签进行解析,比如[b style="xxx"]abc[/b]这一类是不会被解析的。这样一来,第3步解析后出现的HTML标签也是可控的,也就是安全的。
1 请登录后投票
   发表时间:2011-08-18  
int08h 写道
核桃博客 写道
int08h 写道
核桃博客 写道
赞同,
不过话说很多网站需要提供可视化编辑或者html编辑,bbcode不一定完全满足需求,
这个时候就可以使用我的hetaoblogxsshtmlfilter项目对输入的html做白名单验证

如果我有决定权的话,我会扩展BBCode,而不是开放全部的HTML再过滤……BBCode和HTML长得还是很像的,扩展其实容易

orz,
话说你后台怎么验证输入的是bbcode和合法内容?请求可以随便造,随便一个input都可以发送html过来

请看前面的贴子,BBCode的处理流程:
1、获取用户输入
2、把用户输入进行Encode,比如<a>abc</a>在这一步后会变成&lt;a&gt;abc&lt;/a&gt;,这一步以后已经没有HTML代码了,这个内容是“绝对安全”的
3、针对这个Encode后的内容,进行BBCode解析,如把\[b\]abc[/b]替换成<strong>abc</strong>

注意第3步,他只对系统允许的BBCode标签进行解析,比如[b style="xxx"]abc[/b]这一类是不会被解析的。这样一来,第3步解析后出现的HTML标签也是可控的,也就是安全的。


不错啊,值得学习:)
0 请登录后投票
   发表时间:2011-08-18  
非常感谢 引出两位大神 这个贴值了
0 请登录后投票
   发表时间:2011-08-18  
核桃博客 写道
int08h 写道
核桃博客 写道
int08h 写道
核桃博客 写道
赞同,
不过话说很多网站需要提供可视化编辑或者html编辑,bbcode不一定完全满足需求,
这个时候就可以使用我的hetaoblogxsshtmlfilter项目对输入的html做白名单验证

如果我有决定权的话,我会扩展BBCode,而不是开放全部的HTML再过滤……BBCode和HTML长得还是很像的,扩展其实容易

orz,
话说你后台怎么验证输入的是bbcode和合法内容?请求可以随便造,随便一个input都可以发送html过来

请看前面的贴子,BBCode的处理流程:
1、获取用户输入
2、把用户输入进行Encode,比如<a>abc</a>在这一步后会变成&lt;a&gt;abc&lt;/a&gt;,这一步以后已经没有HTML代码了,这个内容是“绝对安全”的
3、针对这个Encode后的内容,进行BBCode解析,如把\[b\]abc[/b]替换成<strong>abc</strong>

注意第3步,他只对系统允许的BBCode标签进行解析,比如[b style="xxx"]abc[/b]这一类是不会被解析的。这样一来,第3步解析后出现的HTML标签也是可控的,也就是安全的。


不错啊,值得学习:)


如果是下面这段代码 会有xss漏洞吗?

<%response.sendRedirect((String)request.getAttribute("url"))%>
0 请登录后投票
   发表时间:2011-08-18  
kevinwong 写道

如果是下面这段代码 会有xss漏洞吗?

<%response.sendRedirect((String)request.getAttribute("url"))%>

仅这一行代码是不会出问题的,sendRedirect的实现是返回一个302状态码,通过Location头标识需要跳转的地址,属于HTTP协议级别的动作,因此即使URL是javascript:伪协议也不会被执行
但是如果url指定的目标页面有XSS漏洞,这就可能被利用,比如目标页面有这么一句
<% response.write(request.getAttribute("message")) %>

那么他就可以给你传这个这样的url(当然我这没编码,为了看得清楚些):
http://www.haha.com/dest.jsp?message=<script>alert('!!')</script>

然后就会把<script>alert('!!')</script>这一段完整输出在HTML上,形成一个script标签并且被执行
1 请登录后投票
   发表时间:2011-08-18  
烦就烦在所有输出要转换一下,有没有简单的方法不用每块地方改是关键
0 请登录后投票
   发表时间:2011-08-18  
int08h 写道
kevinwong 写道

如果是下面这段代码 会有xss漏洞吗?

<%response.sendRedirect((String)request.getAttribute("url"))%>

仅这一行代码是不会出问题的,sendRedirect的实现是返回一个302状态码,通过Location头标识需要跳转的地址,属于HTTP协议级别的动作,因此即使URL是javascript:伪协议也不会被执行
但是如果url指定的目标页面有XSS漏洞,这就可能被利用,比如目标页面有这么一句
<% response.write(request.getAttribute("message")) %>

那么他就可以给你传这个这样的url(当然我这没编码,为了看得清楚些):
http://www.haha.com/dest.jsp?message=<script>alert('!!')</script>

然后就会把<script>alert('!!')</script>这一段完整输出在HTML上,形成一个script标签并且被执行



明白了,谢谢! Fortify把所有sendRedirect里面包含request.getAttribute的调用都归为http response sppliting 漏洞,说这个可能被用于各种攻击,快被搞疯了。
0 请登录后投票
   发表时间:2011-08-19  
话说getattribute得到的是你自己setattribute的东西啊,你是说getparameter么?
kevinwong 写道
核桃博客 写道
int08h 写道
核桃博客 写道
int08h 写道
核桃博客 写道
赞同,
不过话说很多网站需要提供可视化编辑或者html编辑,bbcode不一定完全满足需求,
这个时候就可以使用我的hetaoblogxsshtmlfilter项目对输入的html做白名单验证

如果我有决定权的话,我会扩展BBCode,而不是开放全部的HTML再过滤……BBCode和HTML长得还是很像的,扩展其实容易

orz,
话说你后台怎么验证输入的是bbcode和合法内容?请求可以随便造,随便一个input都可以发送html过来

请看前面的贴子,BBCode的处理流程:
1、获取用户输入
2、把用户输入进行Encode,比如<a>abc</a>在这一步后会变成&lt;a&gt;abc&lt;/a&gt;,这一步以后已经没有HTML代码了,这个内容是“绝对安全”的
3、针对这个Encode后的内容,进行BBCode解析,如把\[b\]abc[/b]替换成<strong>abc</strong>

注意第3步,他只对系统允许的BBCode标签进行解析,比如[b style="xxx"]abc[/b]这一类是不会被解析的。这样一来,第3步解析后出现的HTML标签也是可控的,也就是安全的。


不错啊,值得学习:)


如果是下面这段代码 会有xss漏洞吗?

<%response.sendRedirect((String)request.getAttribute("url"))%>

0 请登录后投票
   发表时间:2011-08-19  
咨询楼主1个问题。
XSS怎么进行漏洞扫描的??
另外能写一个XSS的简单例子吗?
比如说在input 输入什么?还是在URL后面输入什么?
0 请登录后投票
   发表时间:2011-08-19  
核桃博客 写道
话说getattribute得到的是你自己setattribute的东西啊,你是说getparameter么?
kevinwong 写道
核桃博客 写道
int08h 写道
核桃博客 写道
int08h 写道
核桃博客 写道
赞同,
不过话说很多网站需要提供可视化编辑或者html编辑,bbcode不一定完全满足需求,
这个时候就可以使用我的hetaoblogxsshtmlfilter项目对输入的html做白名单验证

如果我有决定权的话,我会扩展BBCode,而不是开放全部的HTML再过滤……BBCode和HTML长得还是很像的,扩展其实容易

orz,
话说你后台怎么验证输入的是bbcode和合法内容?请求可以随便造,随便一个input都可以发送html过来

请看前面的贴子,BBCode的处理流程:
1、获取用户输入
2、把用户输入进行Encode,比如<a>abc</a>在这一步后会变成&lt;a&gt;abc&lt;/a&gt;,这一步以后已经没有HTML代码了,这个内容是“绝对安全”的
3、针对这个Encode后的内容,进行BBCode解析,如把\[b\]abc[/b]替换成<strong>abc</strong>

注意第3步,他只对系统允许的BBCode标签进行解析,比如[b style="xxx"]abc[/b]这一类是不会被解析的。这样一来,第3步解析后出现的HTML标签也是可控的,也就是安全的。


不错啊,值得学习:)


如果是下面这段代码 会有xss漏洞吗?

<%response.sendRedirect((String)request.getAttribute("url"))%>



嗯 扫描出很多漏洞都是以前没有考虑过的 这个报告里面说是HTTP Response Splitting漏洞,不是xss,安全这块水太深了。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics