我刚刚回答了一个问题,答案提示AntiXss库以避免跨站点脚本.听起来很有意思,在阅读msdn博客时,它似乎只是提供了一个HtmlEncode()方法.但我已经使用了HttpUtility.HtmlEncode().
为什么我要在HttpUtility.HtmlEncode上使用AntiXss.HtmlEncode?
实际上,我不是第一个提出这个问题的人.事实上,Google 主要提出了一些 答案
嗯,这很好,但这对我意味着什么?我不那么在乎为0.1ms的表现,我不觉得自己真的要下载并添加另一个库的依赖了,我已经拥有的功能.
是否存在AntiXss实现可以防止HttpUtility实施不会发生攻击的情况示例?
如果我继续使用HttpUtility实施,我是否有风险?怎么样这个"错误"?
Internet Explorer 8具有新的安全功能,XSS筛选器试图拦截跨站点脚本尝试.用这种方式描述:
XSS Filter是Internet Explorer 8的新增功能,可检测URL和HTTP POST请求中的JavaScript.如果检测到JavaScript,则XSS过滤器会搜索反射的证据,如果攻击请求未经更改提交,则会返回到攻击网站的信息.如果检测到反射,则XSS筛选器会清理原始请求,以便无法执行其他JavaScript.
我发现即使没有"反射的证据",XSS过滤器也会启动,并且我开始认为过滤器只是在向另一个站点发出请求并且响应包含JavaScript时才会注意到.
但即使这样也难以验证,因为效果似乎来了又去.IE有不同的区域,就在我认为我已经重现了这个问题时,过滤器不再开始了,我不知道为什么.
任何人都有关于如何打击这个的任何提示?过滤器真的在寻找什么?有没有办法让好人将数据发布到第三方网站,该网站可以返回HTML以显示在iframe中而不会触发过滤器?
背景:我正在从第三方网站加载JavaScript库.JavaScript从当前HTML页面收集一些数据,并将其发布到第三方网站,第三方网站会响应一些HTML以显示在iframe中.要查看它的实际效果,请访问AOL Food页面,然后单击故事上方的"打印"图标.
是否可以在CSS样式表中使用跨站点脚本?例如,参考样式表包含恶意代码,您将如何执行此操作?我知道你可以使用样式标签,但样式表怎么样?
在编码可能不安全的数据时,是否有编码的理由>?
attr="data",attr='data',<tag>data</tag>)我认为有人会这样做的原因是
<[^>]+>?(罕见)attr=data.:-o(没发生!)我错过了什么吗?
为什么决定使用XMLHTTPRequest进行XML调用不应该跨域边界调用?您可以检索JavaScript,图片,CSS,iframe以及我能从其他域中想到的任何其他内容.为什么不允许Ajax HTTP请求跨越域边界?考虑到我可以看到它被滥用的唯一方式,这似乎是一个奇怪的限制,如果有人将Javascript注入页面.但是,在这种情况下,您只需向文档中添加img,script或iframe元素,即可让它请求第三方URL并将其发送到服务器.
[编辑]
一些答案指出了以下原因,让我们指出他们没有创造禁止这一点的主要原因的原因.
你可以在不使用它的情况下进行XSRF攻击.作为一般规则,XMLHTTPRequest根本不被使用,仅仅是因为以与所有主流浏览器兼容的方式制作XMLHTTPRequest非常困难.如果您希望它们加载您的URL,则可以更轻松地向网址添加img标记.
<script type="text/javascript">
$.post("http://some-bank.com/transfer-money.php",
{ amount: "10000", to_account: "xxxx" })
</script>
Run Code Online (Sandbox Code Playgroud)
可以完成
<body onload="document.getElementById('InvisbleForm').submit()"
<div style="display:none">
<form id="InvisbleForm" action="http://some-bank.com/transfer-money.php" method="POST">
<input type="hidden" name="amount" value="10000">
<input type="hidden" name="to_account" value="xxxxx">
</form>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
你不会再造成任何不安全感.您只是想要以良好的方式使用它的开发人员感到不安.任何想要将此功能用于邪恶(也称为真棒)的人都可以使用其他方法来实现它.
我将bobince的答案标记为正确,因为他指出了关键问题.因为XMLHTTPRequest允许您使用凭据(cookie)发布到目标站点,并读取从站点发回的数据,以及发送人员凭据,您可以编排一些提交一系列表单的JavaScript,包括确认表单,完成生成的任何随机密钥,以防止XSRF.通过这种方式,您可以浏览目标网站,如银行,银行的网络服务器将无法确定是否只是提交所有这些表单的普通用户.
如何在控制台中修复此错误?
Error parsing header X-XSS-Protection: 1; mode=block, 1;
mode=block:expected semicolon at character position 14.
The default protections will be applied.
Run Code Online (Sandbox Code Playgroud) 有谁知道有一个很好的功能来过滤表格中的通用输入?Zend_Filter_input似乎需要事先知道输入的内容,我担心使用像HTML Purifier这样的东西会对性能产生很大的影响.
怎么样的:http://snipplr.com/view/1848/php--sacar-xss/
非常感谢任何意见.
可以通过重写数组构造函数来利用JSON响应,或者如果恶意值不是JavaScript字符串转义的话.
让我们假设这两个向量都以正常方式处理.谷歌通过在所有JSON前加上以下内容来捕获JSON响应直接来源:
throw 1; < don't be evil' >
Run Code Online (Sandbox Code Playgroud)
然后是JSON的其余部分.因此,Evil博士不能,使用此处讨论的那种漏洞利用http://sla.ckers.org/forum/read.php?2,25788获取您的cookie(假设您已登录),将以下内容放在他的网站上:
<script src="http://yourbank.com/accountStatus.json">
Run Code Online (Sandbox Code Playgroud)
至于字符串转义规则,如果我们使用双引号,我们需要在每个前面加上反斜杠,每个反斜杠加上另一个反斜杠等.
但我的问题是,如果你正在做所有这些怎么办?
Burpsuite(自动安全工具)检测在JSON响应中返回unHTML转义的嵌入式XSS尝试,并将其报告为XSS漏洞.我有一份报告说我的应用程序包含此类漏洞,但我不相信.我已经尝试过了,我无法进行漏洞利用工作.
所以我不认为这是正确的,但我问你StackOverflow社区,要权衡.
有一个特定的案例,IE MIME类型嗅探,我认为可能会导致漏洞利用.毕竟,IE 7仍然具有"功能",无论Content-Type标头如何,都会执行嵌入在图像注释中的脚本标签.我们首先要抛开这种明显愚蠢的行为.
当然,根据旧的默认jQuery行为,JSON将由本机JavaScript解析器(Firefox中的Window.JSON)或eval()解析.在任何情况下,以下表达式都不会导致执行警报:
{"myJSON": "legit", "someParam": "12345<script>alert(1)</script>"}
Run Code Online (Sandbox Code Playgroud)
我是对的还是我错的?
哪些浏览器支持HttpOnly cookie,以及哪个版本?
有关HttpOnly cookie和XSS-prevention的讨论,请访问http://www.codinghorror.com/blog/archives/001167.html.
我正在为我在空闲时间工作的聊天应用程序编写JS,我需要根据用户提交的数据更改HTML标识符.这通常是概念上不稳定的东西,我甚至都不会尝试它,但这次我不认为自己有很多选择.我需要做的是转义HTML id以确保它不允许XSS或破坏HTML.
这是代码:
var user_id = escape(id)
var txt = '<div class="chut">'+
'<div class="log" id="chut_'+user_id+'"></div>'+
'<textarea id="chut_'+user_id+'_msg"></textarea>'+
'<label for="chut_'+user_id+'_to">To:</label>'+
'<input type="text" id="chut_'+user_id+'_to" value='+user_id+' readonly="readonly" />'+
'<input type="submit" id="chut_'+user_id+'_send" value="Message"/>'+
'</div>';
Run Code Online (Sandbox Code Playgroud)
逃避id避免上述任何问题的最佳方法是什么?正如你所看到的,现在我正在使用内置escape()函数,但我不确定它与其他替代品相比有多好.我主要习惯在输入文本节点之前清理输入,而不是id本身.