2014-03-27 62 views
1

我有一个输入字段,它允许用户输入保存到数据库中的数据;在很少的用法中,用户可以放入HTML。将HTML保存到数据库并输出的最佳实践

将数据保存到数据库时,最佳做法是将值(可能包括html)转义/编码?或保存为它并在输出期间对其进行编码?

编辑:只是想看看如果大多数人都同意,编码的文本存储在数据库是由该article

+0

更多的间隙,你可以分享你还没有尝试过。 –

+0

这里有两个问题。首先是由于不可信用户输入导致的SQL注入;其次是显示内容时的XSS。等待解决这两个问题的答案。 – jww

回答

0

它总是好的,以逃避解释一个坏主意,将它们放入/前编码用户输入您的数据库,否则您可能会将系统暴露给SQL注入(即,如果您正在使用任何SQL DB)。

0

转义html特定字符是一种标准做法。您可以使用StringEscapeUtilsApache Commons Lang

简单的例子:

String htmlStr = "<h1>Hi</h1>" 
StringEscapeUtils.escapeHtml(htmlStr); 

这将编码字符串作为&lt;h1&gt;Hi&lt;/h1&gt;

+0

我对将编码版本存储在数据库中的担忧是现在我们已经转换了数据。这篇文章(http://lukeplant.me.uk/blog/posts/why-escape-on-input-is-a-bad-idea/)详细但很长的解释为什么它不好转换存储数据。 – Glide

+0

它不坏,但如果你是多输出媒体,这篇文章中的论点值得考虑。 – Santosh

+0

如果我的应用程序确实有多个输出媒体,它是否会同意这篇文章的论点? – Glide