Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript XSS攻击和样式属性_Javascript_Html_Coding Style_Xss - Fatal编程技术网

Javascript XSS攻击和样式属性

Javascript XSS攻击和样式属性,javascript,html,coding-style,xss,Javascript,Html,Coding Style,Xss,存在已知样式的属性XSS攻击,如: <DIV STYLE="width: expression(alert('XSS'));"> 所以基本上我允许ASCII属性带有数值或非常有限的字符串值(基本上是字体名称),不允许使用任何类似于调用的东西 问题是这足够好吗?是否存在任何可能会发生类似情况的攻击: <DIV STYLE="this-is-js-property: alert 'XSS';"> 成功了吗 有人能想到这种测试的XSS漏洞吗 说清楚 我需要样式属性,因为

存在已知样式的属性XSS攻击,如:

<DIV STYLE="width: expression(alert('XSS'));">
所以基本上我允许ASCII属性带有数值或非常有限的字符串值(基本上是字体名称),不允许使用任何类似于调用的东西

问题是这足够好吗?是否存在任何可能会发生类似情况的攻击:

<DIV STYLE="this-is-js-property: alert 'XSS';">

成功了吗

有人能想到这种测试的XSS漏洞吗

说清楚

我需要样式属性,因为像TinyMCE这样的许多工具都会使用它们并进行无害的过滤 禁用样式属性会严重损害功能

所以我更喜欢通过普通案例删除所有可能使用@import、url、表达式等的内容,同时确保基本css语法正常

回答


不,由于点击劫持漏洞是不安全的。

< P>有一个开放的基础,称之为帮助你。

要回答您的问题,
是否存在任何攻击……
;对!

这里有大量的文档,有一些库可以用来正确地转义所有XSS代码

阅读。

安全规则#1:如果你是最没有疑问的,假设有一个洞


你想达到什么目标?什么功能会导致CSS来自不受信任的源?

这不起作用,因为点击劫持漏洞

例如:

<a href="http://example.com/attack.html" style="display: block; z-index: 100000; opacity: 0.5; position: fixed; top: 0px; left: 0; width: 1000000px; height: 100000px; background-color: red;"> </a> 

网址:

该代码将得到完美验证,但可能会造成严重损害


因此-经验法则使用非常严格的白名单或不允许样式属性。

是的,可以对样式属性使用XSS攻击

这些样式是注入的,因为我们没有在特定jsp页面的标记中声明它们,但在安全组审核时通过了:

<img src="<path here>" style=x:ex/**/pression
(alert(54163)) ".gif"
“style=x:ex/**/pression
(警报(54163))“.gif”
我正在考虑使用HTTP过滤器在这里阻止它,但我仍在研究它

我们也没有对隐藏的输入字段进行保护,这也通过了:

<input type="hidden" name="<variable name here>" value="<value here>"  style=x:ex/**/pression(alert
(54163)) "">

使用Burpsuite这样的工具,您可以动态修改请求,将XSS注入到类似这样的标记中。但是,使用OWASP的ESAPI,您可以添加保护。我们没有使用JSTL标记,因为它是旧的遗留代码,所以这是最好的短期解决方案

对于我使用的隐藏输入

<input type="hidden" name="id" value="<%=ESAPI.encoder().encodeForHTMLAttribute(id)%>"

干得好,我不知道这其中有很多复杂的html白名单过滤框架,比如。一个有足够时间的熟练攻击者总能找到击败黑名单过滤器的方法。你能更具体一点吗?有什么具体的攻击吗?我搜索过这些网站,没有发现任何允许使用css进行此类攻击的东西标识符,只有数字。这就是我问的原因。有很多种编码html的方法。你可以使用html实体作为一种。OWASP文档中有所有的示例,其中的库正确地转义了
all
possibilitesHTML实体和其他“有线”“不允许使用编码方式,正如您在语法中看到的那样,只允许非常严格的字符串子集拒绝任何“异常”但是在你的例子中,样式和src属性没有正确转义,也就是说,它们不能没有引号和正确编码的内容。我展示的XS实际上是通过我们的js代码得到的。这一点很好!我认为现在我们可以使用X-Frame-Options来防御点击劫持漏洞。但这和虚假的
a
标签(带有恶意链接)或带有恶意src的
)一样是一个漏洞。在我的例子中,这是一个讨论系统,人们可以在CommonMark+HTML中发表评论,它们可能包括
style=…
属性。(我不是原来的海报,我只是有一个类似的“问题”。)
<input type="hidden" name="<variable name here>" value="<value here>"  style=x:ex/**/pression(alert
(54163)) "">
<input type="hidden" name="id" value="<%=ESAPI.encoder().encodeForHTMLAttribute(id)%>"