angularjs应用程序和web api 2中的XSS

angularjs应用程序和web api 2中的XSS,angularjs,xss,asp.net-web-api2,antixsslibrary,Angularjs,Xss,Asp.net Web Api2,Antixsslibrary,我有一个web应用程序。我正在使用Angularjs和Web Api2 我有一个简单的表单,用户可以插入一些免费文本,通过电子邮件发送给其他人。文本也保存在数据库中,以后可以显示在网站页面中。 我知道我不需要检查用户的输入,因为在WebAPI中,文本是自动编码的。 所以我希望如果用户输入 <script type="..">...</script> 我收到了 <script type="..">...</script> 。。。 没有什么变化

我有一个web应用程序。我正在使用Angularjs和Web Api2

我有一个简单的表单,用户可以插入一些免费文本,通过电子邮件发送给其他人。文本也保存在数据库中,以后可以显示在网站页面中。 我知道我不需要检查用户的输入,因为在WebAPI中,文本是自动编码的。 所以我希望如果用户输入

<script type="..">...</script>
我收到了

<script type="..">...</script>
。。。
没有什么变化

如何对输入进行编码以确保应用程序不会收到XSS攻击?我是否应该保持输入不变,但在将其放入电子邮件时更改其值? 当我把它保存在我的数据库里时?它应该保存在表单中

<script type="..">...</script>
。。。
然后当我在页面上显示时进行编码

在这一刻,我只是在我的web.config中添加了这个

<httpRuntime ... encoderType="System.Web.Security.AntiXss.AntiXssEncoder,System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

但似乎什么都没有改变


谢谢

您有多种可能,您可以在将收到的字符串数据()保存到数据库之前对其进行编码,这样您几乎不需要做任何事情来显示它们,因为它们将显示为字符串,例如
脚本类型=“…”../script


但是如果您仍然希望接受一些html标记,如
,等等。。。您应该保存输入,而不必对其进行编码并使用消毒剂来显示它们:

我想使用解决方案服务器端,如AntiXss库,现在应该包括在框架中。。。那么,您确认我确实需要进行一些编码吗?如果您计划在显示字符串时不清理输出,则必须在保存之前对其进行编码。否则,您可以保存原始字符串,并在显示它们时进行一些清理。
<httpRuntime ... encoderType="System.Web.Security.AntiXss.AntiXssEncoder,System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />