XSS in angularjs app and web api 2



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

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

<script type="..">...</script>

我在我的 Web api 控制器中收到服务器端的内容如下:

&lt;script type=&quot;..&quot;&gt;...&lt;/script&gt;

我收到

<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" />

但似乎什么都没有改变。

谢谢

您有多种可能性,您可以在将收到的字符串数据(https://github.com/mathiasbynens/he)保存到数据库之前对其进行编码,这样您几乎不需要执行任何显示它们的操作,因为它们将显示为像这样的字符串&lt;script type=&quot;..&quot;&gt;...&lt;/script&gt;例如。

但是,如果您仍然想接受一些html标签,例如<p><strong>等...,则应保存输入而不对其进行编码并使用清理器显示它们:https://docs.angularjs.org/api/ng/directive/ngBindHtml

相关内容

  • 没有找到相关文章

最新更新