【发布时间】:2014-04-03 04:41:41
【问题描述】:
我在谷歌上搜索如何在 GWT 中清理 URL 并发现太多不同的方法来做到这一点。我很困惑,我无法做出决定。
因此,假设您有一个允许用户输入 html url 的文本框,然后您可以将该 url 字符串包装在内部或标记中,然后再将其插入 DB。有一个表有一个列来存储 html 代码,如下所示:
<a href=\"...\">AA</a>
<img src=\"http://xxxx\">
//more html rows here
所以假设用户输入http://car.com/pic.gif,然后用户点击提交按钮后,我希望它存储在myDB中,如下所示:
<img src=\"http://car.com/pic.gif\">
但用户可以输入任何内容,因此我们必须确保 url 输入是安全的。所以这里有一些选择:
-选项1:
String str="http://car.com/pic.gif";
if(!UriUtils.isSafeUri(str)){
String safeStrURI=UriUtils.sanitizeUri("<img src="+str+"><br/>");
storeUrl(safeStrURI);// store html string into DB
}
-选项2:
String str="http://car.com/pic.gif";
SafeHtmlBuilder builder = new SafeHtmlBuilder();
builder.appendHtmlConstant("<img src=");
builder.appendEscaped(str);
builder.appendHtmlConstant("><br/>");
String safeStrURI=builder.toString();
storeUrl(safeStrURI);// store html string into DB
-选项3:
String str="http://car.com/pic.gif";
String safeStrURI="<img src="+UriUtils.fromString(str).asString()+"><br/>";
storeUrl(safeStrURI);// store html string into DB
/.....还有一些解决方案,但我不知道
我不明白为什么 Google 不只是制定 1 或 2 种方法来实现这一点,为什么有这么多方法可以做到这一点让我非常困惑。
那么,哪个选项有利于解决我的问题。
或者你知道其他选择吗?
【问题讨论】:
标签: gwt