我正在使用javascript发送session_id
。 session_id
在页面来源中可见,如:
function startUpload(id){
var queryString = '&' + $('#new_doc_upload').serialize() + "&session_id=" + "01dfda2def225bae907b129d2ffb1";
$('#fileUpload').fileUploadSettings('scriptData',queryString);
$('#fileUpload').fileUploadStart();
}
session_id
是否可见或者是否存在安全问题?
感谢。
答案 0 :(得分:4)
没关系。它可能并不理想,但任何对黑客攻击感兴趣的人都会在你可能已经放过它的其他地方寻找它(饼干等),所以你根本不会降低这个标准。 (如果cookie不起作用,Java EE的东西会将其作为后备,将;jsessionid=xxx
附加到每个URL。)
重要的是要确保难以劫持会话,无论黑客如何获得会话ID。 (通过将会话绑定到源IP地址并在每个请求的服务器级别检查,使用合理的超时和各种其他技术。)
答案 1 :(得分:3)
我认为这很好。我的理由是PHP以明文形式发送它,使用会话时浏览器也是如此。以下是您在发布网络请求时在后台发生的情况:
> GET / HTTP/1.1
Host: example.com
Accept: */*
< HTTP/1.1 200 OK
< Date: Tue, 12 Jul 2011 07:00:26 GMT
< Server: Apache
< Set-Cookie: PHP_SESSID=2873fd75b29380bc9d775e43e41dc898; path=/; domain=example.com; secure
< P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
< Vary: Accept-Encoding
< Content-Length: 5538
< Content-Type: text/html; charset=UTF-8
正如您所看到的,我发出了一个GET请求和服务器响应Set-Cookie: PHP_SESSID=
后跟我的会话ID。任何“嗅探”能够在JavaScript中查看会话ID的请求的人都可以从标题中获取它。唯一需要担心的是恶意浏览器插件和其他漏洞,这些漏洞可能无法通过正确保护代码来避免。
我建议您查看http://phpsec.org/projects/guide/4.html有关会话劫持的一些提示和信息。
答案 2 :(得分:0)
我最近在谷歌地球插件项目上做了这个。它没有使用浏览器的cookie,所以我不得不使用javascript从URL中传递会话变量,从jtml中获取它。没有安全问题。
答案 3 :(得分:0)
我认为这不是严重的问题,但仍然没有正确编码。如果可能,不应该让任何人知道ID。从您的代码看起来您已经编码了您的id.you应该在您的编码中添加更多信息来制作它更安全。
举个例子 一个人可以很容易地解码“encode(15)”,但很难解码“编码('php is great'.15。'codint language')”;
答案 4 :(得分:-2)
不,我觉得没关系。您正在使session_id易于访问,这反过来会使会话劫持攻击非常容易(并且可能)。
如果您需要session_id,可以采用一些方法来减少会话劫持的可能性,考虑在上传后重新生成session_id,或者进行辅助检查以验证用户。
如果你试图阻止未经授权的上传,我会考虑一些不同的东西 - 可能会在上传期间生成与用户相关联的一次性唯一字符串,但不会生成session_id本身。那个风险太大,IMO。