我允许用户使用以下命令输入文本:
<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编码,并呈现为<
和>
,因此脚本标记不会作为脚本执行。但是将这些标签保存在数据库中很危险,因此我想过滤掉输入中的<script>
标签(和其他危险输入)-什么是最好的方法?>]
我希望有比正则表达式(ng-pattern)更好的解决方案,因为要正确使用多语言是几乎不可能的。我目前的想法是在控制器中使用不区分大小写的c#正则表达式在服务器上进行清理,以去除<script>
标签-但也存在其他脚本问题-例如img onerror事件和带有JavaScript URL的href。我想先解决脚本元素,然后再担心其他元素。谢谢。
我允许用户使用以下命令输入文本:
尝试正则表达式。