作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在阅读 JavaDocs 和各种 GWT 文章时,我偶尔会遇到以下 Safe*
类:
SafeHtml
SafeHtmlBuilder
看起来 SafeHtml
在创建新的 Widget
或 Composite
时以某种方式被使用,并有助于确保 Widget/Composite 不会在客户端执行任何脚本。是这样吗,还是我离题了?有人可以提供在实际中正确使用 SafeHtml
的代码示例吗?
如果是这样,那么 SafeHtmlBuilder
的意义何在?您是否在 Widget 中使用它以某种方式“构建”安全的 HTML?
最佳答案
最简单的查看方式SafeHtml
作为 String
任何 HTML 标记都已被适本地转义。这可以防止跨站点脚本 (XSS) 攻击,因为它可以确保,例如,如果有人以 <SCRIPT>alert('Fail')</SCRIPT>
的形式输入他们的名字这是呈现页面而不是运行 JavaScript 时显示的文本。
所以不要有这样的东西:
String name = getValueOfName();
HTML widget = new HTML(name);
你应该使用:
String name = getValueOfName();
HTML widget = new HTML(SafeHtmlUtils.fromString(name));
SafeHtmlBuilder
就像一个 StringBuilder
除了它会自动转义您添加的字符串中的 HTML 标记。所以扩展上面的例子:
String name = getValueOfName();
SafeHtmlBuilder shb = new SafeHtmlBuilder();
shb.appendEscaped("Name: ").appendEscaped(name);
HTML widget = new HTML(shb.toSafeHtml());
关于java - GWT 安全 HTML 框架 : When to use, 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13027460/
我是一名优秀的程序员,十分优秀!