javascript - 防止用户输入的脚本在网页中运行

标签 javascript jquery html xss

在我的应用程序中,有一个评论框。如果有人输入类似

的评论

<script>alert("hello")</script>

然后当我加载该页面时会出现一个警告。

有什么办法可以防止这种情况发生吗?

最佳答案

有几种方法可以解决这个问题,但由于您没有提到您使用的是哪种后端技术,所以只能给出粗略的答案。

此外,您还没有提到是否要允许或拒绝在框中输入常规 HTML 的能力。

方法一:

在输入的过程中清理输入。当您在服务器上接受某些内容时,查找脚本标签并将其删除。

这实际上比预期的要难得多。

方法二:

在返回服务器的过程中转义数据。在 PHP 中有一个函数叫做 htmlentities 这会将所有 HTML 转换为按字面意思呈现的内容。

单词<script>alert("hello")</script>会出现在您的页面上。

方法三

白名单

这远远超出了单个帖子的答案,而且确实需要了解您的后端系统,但允许一些 HTML 字符而不允许其他字符是可能的。

要做到这一点非常困难,您最好使用经过良好测试的库包。

关于javascript - 防止用户输入的脚本在网页中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25397070/

相关文章:

javascript - Ember.js - 调用父模型 Hook 为子模型加载数据

javascript - 如何使用ajax提交已经加载ajax的表单,而不重新加载当前页面?

javascript - 从映射数组返回 React 组件

javascript - 是否可以将 onclick 事件添加到 jQuery 生成的输入字段中?

javascript - 如何在文档标题上添加 (1) 文本通知

javascript - Node.js:为什么在错误处理期间应该返回回调结果?

jquery - 分离、操作、附加

javascript - 为标签中的子字符串着色

html - 将 Font Awesome 图标添加到 css 类

javascript - jquery复选框无法点击