Php 会话id在页面源中可见,可以吗?

Php 会话id在页面源中可见,可以吗?,php,javascript,jquery,security,session,Php,Javascript,Jquery,Security,Session,我正在用javascript发送会话id。session\u id在页面的源代码中可见,如下所示: function startUpload(id){ var queryString = '&' + $('#new_doc_upload').serialize() + "&session_id=" + "01dfda2def225bae907b129d2ffb1"; $('#fileUpload').fileUploadSettings('scriptData',

我正在用javascript发送
会话id
session\u id
在页面的源代码中可见,如下所示:

function startUpload(id){
    var queryString = '&' + $('#new_doc_upload').serialize() + "&session_id=" + "01dfda2def225bae907b129d2ffb1";
    $('#fileUpload').fileUploadSettings('scriptData',queryString);
    $('#fileUpload').fileUploadStart();
}
会话\u id
是否可见,或者是否可能是安全问题?
谢谢。

不,我觉得不行。您使会话id易于访问,从而使会话劫持攻击变得非常容易(而且很可能)

如果您需要Session SID,有一些方法可以减少会话劫持的可能性,在上传之后考虑重新生成Session SID,或者进行二次检查来验证用户。


如果你试图阻止未经授权的上传,我会考虑一些不同的东西——也许是生成一个唯一的字符串,它在上传期间与用户关联,而不是SeStudioID本身。我认为这太冒险了。

不,我认为这不好。您使会话id易于访问,从而使会话劫持攻击变得非常容易(而且很可能)

如果您需要Session SID,有一些方法可以减少会话劫持的可能性,在上传之后考虑重新生成Session SID,或者进行二次检查来验证用户。


如果你试图阻止未经授权的上传,我会考虑一些不同的东西——也许是生成一个唯一的字符串,它在上传期间与用户关联,而不是SeStudioID本身。这太冒险了,我想。

没关系。这可能并不理想,但任何对黑客攻击你的会话感兴趣的人都会在你可能放它的其他地方(cookies等)寻找它,因此你根本没有降低多少门槛。(如果Cookie不起作用,Java EE stuff会将此作为后备方案,将
;jsessionid=xxx
附加到每个URL。)


重要的是,无论黑客如何获得会话ID,都要确保会话很难被劫持。(通过将会话绑定到源IP地址,并在每个请求的服务器级别上检查会话,使用正常超时和各种其他技术。)

没问题。这可能并不理想,但任何对黑客攻击你的会话感兴趣的人都会在你可能放它的其他地方(cookies等)寻找它,因此你根本没有降低多少门槛。(如果Cookie不起作用,Java EE stuff会将此作为后备方案,将
;jsessionid=xxx
附加到每个URL。)


重要的是,无论黑客如何获得会话ID,都要确保会话很难被劫持(通过将会话绑定到源IP地址,并在每个请求上在服务器级别进行检查,使用正常超时和各种其他技术)

我最近在谷歌地球插件项目中做了这件事。它没有使用浏览器的cookies,所以我必须用javascript在url中传递会话变量,javascript从html中获取会话变量。没有安全问题。

我最近在谷歌地球插件项目中做了这件事。它没有使用浏览器的cookies,所以我必须用javascript在url中传递会话变量,javascript从html中获取会话变量。没有安全问题。

我认为这是完全可以解决的。我的基本原理是PHP以明文形式发送,使用会话时浏览器也是如此。下面是您发出web请求时在后台发生的情况:

> 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/HTTP/1.1
主持人:example.com
接受:*/*
如您所见,我发出了一个GET请求,服务器响应带有
Set Cookie:PHP_sessiond=
,后跟我的会话ID。任何“嗅探”请求的人,如果能够在JavaScript中看到会话ID,也可以从头文件中获取它。唯一需要担心的是恶意浏览器插件和其他不太可能的漏洞攻击,但通过正确保护代码可以避免


我建议您查看一些有关会话劫持的提示和信息。

我认为这是完全正确的。我的基本原理是PHP以明文形式发送,使用会话时浏览器也是如此。下面是您发出web请求时在后台发生的情况:

> 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/HTTP/1.1
主持人:example.com
接受:*/*
如您所见,我发出了一个GET请求,服务器响应带有
Set Cookie:PHP_sessiond=
,后跟我的会话ID。任何“嗅探”请求的人,如果能够在JavaScript中看到会话ID,也可以从头文件中获取它。唯一需要担心的是恶意浏览器插件和其他不太可能的漏洞攻击,但通过正确保护代码可以避免


我建议您查看一些有关会话劫持的提示和信息。

我认为这不是一个严重的问题,但仍然没有正确编码。如果可能的话,不应该让任何人知道id。从您的代码来看,您似乎已经对id进行了编码。您应该在编码中添加更多信息,以使其更安全

例如
人们可以很容易地解码“encode(15)”,但解码“encode('php's great'.15.'codint language')”非常困难

我认为这不是一个严重的问题,但仍然没有正确编码。不应该