gpt4 book ai didi

java - 通过 DOMParsing (Antisamy) 进行哪种编码

转载 作者:太空宇宙 更新时间:2023-11-04 08:02:35 24 4
gpt4 key购买 nike

我正在一个新项目中使用 antisamy,以防止 xss 漏洞。在应用程序中,用户可以通过简单(ansi 编码)的 Excel 文件上传内容。应该可以插入一些 html,但不可能插入 javascript 等。

当我使用 antisamy 扫描输入时,出现以下错误:a 标记包含我们无法处理的属性。 href 属性的值为“https& # 5 8 ;& # 4 7 ;& # 4 7 ;bla& # 4 6 ;bla& # 4 6 ;com& # 4 7 ;bla& # 4 7 ;...”。出于安全原因,无法接受该值。我们选择过滤 a 标签以便继续处理输入。

我在实体中添加了一些空格,您可以看到它。

(但应该是 https://bla.bla.com/bla/ ...)

当我调试代码时,“受污染的 Html 输入”及其 href 属性似乎是正确的(因此 excel 文件的编码没有问题)。

antisamy-policy 文件如下所示:

...
<regexp name="onsiteURL" value="([\w\\/\.\?=&amp;;#-~]+|#(\w)+)"/>
<regexp name="offsiteURL" value="(\s)*((ht|f)tp(s?)://|mailto:)[A-Za-z0-9]+[~a-zA-Z0-9-_\.@#$%&amp;;:,\?=/\+!]*(\s)*"/>
...
<attribute name="href">
<regexp-list>
<regexp name="onsiteURL"/>
<regexp name="offsiteURL"/>
</regexp-list>
<literal-list>
<literal value="javascript:void(0)"/>
</literal-list>
</attribute>
...

我还测试了正则表达式模式,因为我认为该链接是有效的。当然不是,当它是由 html 实体编码时。

那么问题出在哪里呢?

提前非常感谢

<小时/>

我对 AntiSamy 代码进行了一些调试,现在我看到了问题,但我仍然无法解决问题。htmlentities 是通过 antisamy AFTER 验证添加的(如果我将其打印在 HTML 页面上......)。但我的输入将由 AntiSamy 库中的 org.cyberneko.html.parsers.DOMFragmentParser 使用以下语句进行解析: parser.parse(new InputSource(new StringReader(html)), dom);在我的 a 标签中,href 属性现在包含如下内容:https://bla.bla.com/bla?frame=Frameset[不可定义字符]lang=en插入的 https://bla.bla.com/bla?frame=Frameset&lang=en

所以这似乎是一个编码问题,&符号不再是&符号。如何找出我应该使用哪种编码?

编辑:角色是 E2 8C A9 -> ⟨

最佳答案

我做了一些解决方法,将“&”替换为“&”。我不知道为什么,但它有效。这是唯一一个无法正常工作的角色。

关于java - 通过 DOMParsing (Antisamy) 进行哪种编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12622036/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com