【发布时间】:2017-02-04 05:49:06
【问题描述】:
考虑以下情况:
- 我向 PHP 发送了一个 AJAX 请求(无用户输入),它启动了一个函数。
- 该函数返回一个原始 HTML 字符串。可以是任何东西 - 一个链接列表、一堆空的 div、要内联插入的 SVG、页面的大部分内容......在其创建过程中不使用任何用户输入数据。
- 我收到字符串作为响应并将其插入到 div。
- 我(目前并希望继续)使用纯 JS - 无库。
接受 JS 中固有的某种程度的不安全性,我刚刚所做的事情有多不安全?
OWASP XSS Cheat Sheet 表示要转义所有“不受信任的数据”。鉴于上述情况,我的 AJAX 请求的结果是否不受信任?任何 AJAX 请求的结果是否被视为“不受信任”?
以这种方式插入 HTML 是不好的做法吗?如果是这样,我应该怎么做?
编辑以澄清几件事:
- AJAX 请求中的 URL 变量仅用于在服务器上启动 PHP 函数。根本没有将变量传递给该函数(具体来说,我使用的是 Joomla 的 com_ajax 组件)。
- 所有返回的代码都是静态的,是我写的。
【问题讨论】:
-
假设服务器返回的 HTML 完全由您生成,并且不涉及任何用户输入,这对我来说听起来很安全。
-
如果您信任编写服务器脚本的程序员,那么您应该信任响应。
-
把换成"",改用bbcode
-
在发送 AJAX 请求之前,您需要使用 JAVASCRIPT 验证它是否有值。
-
@SathvikCheela 为什么在发送之前而不是在服务器端接收之后?我可以看到两者都做,但客户端部分不会让任何事情更安全,它只是为了更快的客户反馈。
标签: javascript php ajax xss innerhtml