锁定老帖子 主题: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>在这一步后会变成<a>abc</a>,这一步以后已经没有HTML代码了,这个内容是“绝对安全”的 3、针对这个Encode后的内容,进行BBCode解析,如把\[b\]abc[/b]替换成<strong>abc</strong> 注意第3步,他只对系统允许的BBCode标签进行解析,比如[b style="xxx"]abc[/b]这一类是不会被解析的。这样一来,第3步解析后出现的HTML标签也是可控的,也就是安全的。 |
|
返回顶楼 | |
发表时间:2011-08-18
int08h 写道 核桃博客 写道 int08h 写道 核桃博客 写道 赞同,
不过话说很多网站需要提供可视化编辑或者html编辑,bbcode不一定完全满足需求, 这个时候就可以使用我的hetaoblogxsshtmlfilter项目对输入的html做白名单验证 如果我有决定权的话,我会扩展BBCode,而不是开放全部的HTML再过滤……BBCode和HTML长得还是很像的,扩展其实容易 orz, 话说你后台怎么验证输入的是bbcode和合法内容?请求可以随便造,随便一个input都可以发送html过来 请看前面的贴子,BBCode的处理流程: 1、获取用户输入 2、把用户输入进行Encode,比如<a>abc</a>在这一步后会变成<a>abc</a>,这一步以后已经没有HTML代码了,这个内容是“绝对安全”的 3、针对这个Encode后的内容,进行BBCode解析,如把\[b\]abc[/b]替换成<strong>abc</strong> 注意第3步,他只对系统允许的BBCode标签进行解析,比如[b style="xxx"]abc[/b]这一类是不会被解析的。这样一来,第3步解析后出现的HTML标签也是可控的,也就是安全的。 不错啊,值得学习:) |
|
返回顶楼 | |
发表时间:2011-08-18
非常感谢 引出两位大神 这个贴值了
|
|
返回顶楼 | |
发表时间:2011-08-18
核桃博客 写道 int08h 写道 核桃博客 写道 int08h 写道 核桃博客 写道 赞同,
不过话说很多网站需要提供可视化编辑或者html编辑,bbcode不一定完全满足需求, 这个时候就可以使用我的hetaoblogxsshtmlfilter项目对输入的html做白名单验证 如果我有决定权的话,我会扩展BBCode,而不是开放全部的HTML再过滤……BBCode和HTML长得还是很像的,扩展其实容易 orz, 话说你后台怎么验证输入的是bbcode和合法内容?请求可以随便造,随便一个input都可以发送html过来 请看前面的贴子,BBCode的处理流程: 1、获取用户输入 2、把用户输入进行Encode,比如<a>abc</a>在这一步后会变成<a>abc</a>,这一步以后已经没有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"))%> |
|
返回顶楼 | |
发表时间: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标签并且被执行 |
|
返回顶楼 | |
发表时间:2011-08-18
烦就烦在所有输出要转换一下,有没有简单的方法不用每块地方改是关键
|
|
返回顶楼 | |
发表时间: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 漏洞,说这个可能被用于各种攻击,快被搞疯了。 |
|
返回顶楼 | |
发表时间: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>在这一步后会变成<a>abc</a>,这一步以后已经没有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"))%> |
|
返回顶楼 | |
发表时间:2011-08-19
咨询楼主1个问题。
XSS怎么进行漏洞扫描的?? 另外能写一个XSS的简单例子吗? 比如说在input 输入什么?还是在URL后面输入什么? |
|
返回顶楼 | |
发表时间: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>在这一步后会变成<a>abc</a>,这一步以后已经没有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,安全这块水太深了。 |
|
返回顶楼 | |