HTML编码服务器端与客户端

shi*_*esh 1 javascript asp.net html-encode

我想在我的页面上启用评论发布,所以我需要在发送帖子并插入数据库之前执行一些html编码.

这个理想的一面是什么?
Sever方面(我使用asp.net)或客户端(javascript)?

T.J*_*der 6

如果您的意思是清理用户输入,那么您可以安全地执行此操作的唯一地方是服务器端.您无法确定客户端是否已完成任何操作,绕过客户端代码太容易了.

这就像数据验证:在客户端上进行数据验证(确保表单的关键字段填入有效值)是很好的,因为即时反馈可以提供良好的用户体验,但这样做不是替代品在服务器上执行此操作,因为绕过客户端验证非常容易.

但是,通过消毒输入,您甚至不想尝试做客户端; 假设它没有消毒并在服务器上消毒它.

在ASP.Net中,如果您正在清理的输入是一个字符串,您稍后将在HTML页面中显示,并且您希望确保它不包含自己的HTML标记,您可以使用它HttpServerUtility.HtmlEncode来编码字符串(基本上,<变成&lt;这样).


Nat*_*hot 5

毫无疑问,绝对是服务器端.但是,我会在输出到浏览器之前对输入进行编码,而不是在输入到数据库之前.

如果您使用的是ASP .NET MVC,则可以使用辅助方法.

<%= Html.Encode("user comment with html in it <script>alert('bad')</script>") %>
Run Code Online (Sandbox Code Playgroud)

如果您在NET 4框架中使用ASP .NET(webforms或MVC),则可以使用新语法.

<%: "user comment with html in it <script>alert('bad')</script>" %>
Run Code Online (Sandbox Code Playgroud)