Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.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
对于setHTML()方法,如果我们不使用Safehtml,但验证字符串&;只接受一些有限的html标记(Gwt)?_Html_Gwt - Fatal编程技术网

对于setHTML()方法,如果我们不使用Safehtml,但验证字符串&;只接受一些有限的html标记(Gwt)?

对于setHTML()方法,如果我们不使用Safehtml,但验证字符串&;只接受一些有限的html标记(Gwt)?,html,gwt,Html,Gwt,任何具有setHTML方法的小部件都可能在安全系统中造成漏洞,但如果我们验证字符串&只接受一些有限的html标记,例如,…。然后我们将这个字符串放入setHTML方法中 那么我的问题是“如果我们这样做,它仍然安全吗?” 例如,我们检查字符串文本以确保它只包含一些有限的html标记,..。如果字符串文本包含其他标记,则不允许使用来输入该文本。然后我们使用: html1.setHTML(文本)而不是html1.setHTML(safehtmlitls.fromString(text)) 我不知道为什

任何具有setHTML方法的小部件都可能在安全系统中造成漏洞,但如果我们验证字符串&只接受一些有限的html标记,例如
,…
。然后我们将这个字符串放入setHTML方法中

那么我的问题是“如果我们这样做,它仍然安全吗?” 例如,我们检查字符串文本以确保它只包含一些有限的html标记
,..
。如果字符串文本包含其他标记,则不允许使用来输入该文本。然后我们使用:
html1.setHTML(文本)
而不是
html1.setHTML(safehtmlitls.fromString(text))

我不知道为什么
html1.setHTML(safehtmlitls.fromString(text))
不生成格式化文本,在eclipse中运行时只显示纯文本?比如说

html1.setHTML(SafeHtmlUtils.fromString("<b>text</b>")) 
html1.setHTML(safehtmlitls.fromString(“文本”))
将使用纯文本结果
text
而不是正确html格式的粗体文本“text”

您希望清理html,而不是转义它。
fromString
方法用于转义字符串-如果用户输入
a
,但忘记了空格,然后添加
>c
,则不希望c为粗体,b完全缺失。转义是为了实际呈现给定的字符串,假设它是文本

在整个范围的另一端,您可以使用
fromTrustedString
,它告诉GWT您绝对信任数据源,并且您将允许它做任何事情。通常不应对来自用户的任何数据执行此操作

在整个过程的另一端,我们有一个卫生设施,在这个过程中,您获取一个表示为HTML的字符串,并确保它是安全的,而不是将其视为文本,或者隐式地信任它。这很难做好-任何具有
style
属性的标记都有可能攻击您(这就是为什么GWT像
SafeHtml
一样具有
SafeStyle
,任何具有uri、url或href的标记都可以被用来攻击(因此
SafeUri
),并且浏览器视为回调的任何属性(如
onclick
或类似属性)都可以用于运行JavaScript


至少在GWT 2.4-
SimpleHtmlSanitizer
中有一个内置的实现。这个类将某些html标记(包括
标记)以及其他一些标记)列为白名单。属性被完全删除,因为有太多情况下它们可能不安全。正如类名所示,这s只是解决此问题的一种简单方法-更复杂和深入的方法可能更符合原始代码,但这也带来了允许不安全HTML内容的风险。

Thax您的答案是,但是为什么html1.setHTML(SafeThMLTILS.fromString(“text”))的输出是纯文本?上述代码的输出是:“text”没有格式化文本吗?这让我很困惑,为什么我们需要一个ehtmlutils.fromString??因为我想要安全的html,但我也希望结果有正确的html格式化文本,而不仅仅是纯文本。答案在第一段-内容
“ac”
可能是糟糕的html,也可能是难以阅读的文本,就像有人故意编写了
“文本”
并不意味着它看起来像html—代码不知道。一旦它变成了
SafeHtml
,就应该清楚它是什么意思。你可以通过选择
safehtmlits.fromString
来区分它,意思是“它只是一个字符串”、
safehtmlits.fromTrustedString
意思是“它是html,已知安全的”,或者
HtmlSanitizer.sanitize
意思是“这是html,可能不安全”。但你还没有回答我。为什么“html1.setHTML(safehtmlitls.fromString(“text”)”的输出是纯文本“text”(没有粗体文本)非格式化文本(&N)。如果它是格式化文本,则文本应为粗体。这是一个非常简单的问题,为什么每个人都避免回答它,我不知道为什么?最后我修复了,我必须使用SafeHtmlTils.fromSafeConstant,那么结果将是html格式的文本。Thax u无论如何,没有人在回避,您不理解答案。如果我,作为用户谁不懂HTML,想写“a”