【发布时间】:2011-08-20 14:57:16
【问题描述】:
假设我有一个 php 生成的 javasrcipt 文件,其中包含当前登录的用户名、id 号和电子邮件地址。简单的 document.location.href 查找会阻止远程站点确定当前登录的用户吗?
这样安全吗?
if(window.document.location.hostname == 'domain.com')
var user = {
name:'me',
id:234243,
email:'email@email.com'
};
else alert('Sorry you may not request this info cross sites.');
一开始我觉得它是安全的。
编辑:我最初认为这很明显,但我正在使用 cookie 来确定当前登录的用户。我只是想防止跨域访问用户信息。例如,如果删除了 if 语句,恶意站点 A 可以嵌入 javascript 文件并访问用户信息。通过添加 if 语句,用户 js 对象永远不会出现。不支持跨站点 ajax,因此只有通过 javascript 插入,恶意站点才能尝试确定当前登录的用户。
编辑 2: 使用 php 检查我的 http_refer 是否安全?如果还为客户端启用了缓存怎么办?例如,如果用户访问我的站点 A 下载了用户脚本,然后访问站点 B 恶意站点,那么脚本会被缓存,从而绕过服务器检查用户的 http_refer 的需要?
【问题讨论】:
-
为什么需要将用户信息放入javascript? php 是服务器端的并且已经安全。无论如何,您可能想使用 https :)
-
我正在设置一个实时 ajax 应用程序,它在那里是为了方便。
-
那么您只需要在 ajax 加载的页面上再次生成、重新获取 user_info 即可。现在我知道你将使用 ajax 来传递用户变量,那么它是不安全的。
-
不清楚您要防止的攻击是什么。如果这是 CSRF,那么答案是:NO.
-
@Rock 那你建议如何修复它?
标签: javascript security