javascript - 如何通过URL防止XSS?

标签 javascript php xss html-entities url-encoding

我熟悉常见的持久性 XSS,其中来自用户输入的内容应该在传递到模板(html 实体)时进行转义。

最近,我遇到了一种非持久性的问题,即用户只需在 URL 上发送脚本,该 URL 将显示在页面上的某处。就我而言,它是一个链接标记。

所以我有以下使用当前 URL 的链接标记。

<link rel="next" href="{current_url}" />

问题是当有人发送链接时,例如:

www.example.com/?%27;alert...

它可以是 %27(单引号)和 %22(双引号)来关闭标记,从而允许用户输入脚本等。

我知道防止 XSS 的常用方法是使用 html 实体。在这种情况下,这不会破坏 URL 吗?是否可以使用 url 编码代替?

顺便说一句,我正在使用 PHP,并且更喜欢使用 native 函数。

最佳答案

来自用户的所有内容都应该进行转义,无论是来自 URL 还是来自数据库。在这种情况下,您只需进行 URL 编码而不是 HTML 实体。您的模板引擎可能已经足够智能,可以对进入 HTML 属性的值执行此操作。

关于javascript - 如何通过URL防止XSS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31140509/

相关文章:

html - GWT HTML Widget XSS 安全

javascript - innerHTML 和访问对象属性

javascript - Backbone.js 构建复杂模型(models into a model)

java - JSF:通过 AJAX 调用更新 View 后立即调用 javaScript 方法

php - 在 Symfony2 的 postPersist 和 postUpdate 实体上创建静态文件

php - 从 php 字符串中提取纬度/经度坐标

php - 为什么 file_get_contents() Javascript 输出不执行?

javascript - tickInterval 在 Highchart 和 Highstock 中不能正常工作。

php - 我可以避免 MySQL 注入(inject)吗?

security - 防止 ASP.Net Webforms 中的 XSS : why is Validate Request not enough?