angularjs 应用程序和网络 api 中的 XSS 2
XSS in angularjs app and web api 2
我有一个网络应用程序。我正在使用 Angularjs 和 Web Api2。
我有一个简单的表单,用户可以在其中插入一些免费文本,这些文本将通过电子邮件发送给其他人。文本也保存在数据库中,稍后可以显示在网站页面中。
我知道我不需要检查用户的输入,因为在 web api 中,文本是自动编码的。
所以我希望如果用户输入
<script type="..">...</script>
我在我的网络 api 控制器中接收服务器端,如下所示:
<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" />
但似乎什么都没有改变。
谢谢
您有多种可能性,您可以在将收到的字符串数据 (https://github.com/mathiasbynens/he) 保存到数据库之前对它们进行编码,以这种方式您几乎不需要做任何显示它们的事情,因为它们会例如显示为这样的字符串 <script type="..">...</script>
。
但是如果您仍然想接受一些 html 标签,例如 <p>
、<strong>
等...您应该保存输入而不对其进行编码并使用消毒剂来显示他们:https://docs.angularjs.org/api/ng/directive/ngBindHtml
我有一个网络应用程序。我正在使用 Angularjs 和 Web Api2。
我有一个简单的表单,用户可以在其中插入一些免费文本,这些文本将通过电子邮件发送给其他人。文本也保存在数据库中,稍后可以显示在网站页面中。 我知道我不需要检查用户的输入,因为在 web api 中,文本是自动编码的。 所以我希望如果用户输入
<script type="..">...</script>
我在我的网络 api 控制器中接收服务器端,如下所示:
<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" />
但似乎什么都没有改变。
谢谢
您有多种可能性,您可以在将收到的字符串数据 (https://github.com/mathiasbynens/he) 保存到数据库之前对它们进行编码,以这种方式您几乎不需要做任何显示它们的事情,因为它们会例如显示为这样的字符串 <script type="..">...</script>
。
但是如果您仍然想接受一些 html 标签,例如 <p>
、<strong>
等...您应该保存输入而不对其进行编码并使用消毒剂来显示他们:https://docs.angularjs.org/api/ng/directive/ngBindHtml