AngularJs如何防止标签被输入

问题描述 投票:0回答:1

我允许用户使用以下命令输入文本:

<textarea ng-model="UserComment.text" rows="4" required maxlength="4000" />

现在,这允许用户输入

<script>alert('Hello world!');</script>

这将完全按照脚本标记的输入(如果未过滤)保存到我的数据库中-这非常危险。我知道当我使用以下ng-bind

渲染该输入时

<div class="user-comment-text">{{UserComment.text}}</div>

默认情况下将被清除,并且脚本标记将使用进行HTML编码,并呈现为&lt;&gt;,因此脚本标记不会作为脚本执行。但是将这些标签保存在数据库中很危险,因此我想过滤掉输入中的<script>标签(和其他危险输入)-什么是最好的方法?>]

我希望有比正则表达式(ng-pattern)更好的解决方案,因为要正确使用多语言是几乎不可能的。我目前的想法是在控制器中使用不区分大小写的c#正则表达式在服务器上进行清理,以去除<script>标签-但也存在其他脚本问题-例如img onerror事件和带有JavaScript URL的href。我想先解决脚本元素,然后再担心其他元素。谢谢。

我允许用户使用以下命令输入文本:

javascript html angularjs validation xss
1个回答
0
投票

尝试正则表达式。

© www.soinside.com 2019 - 2024. All rights reserved.