虽然我意识到这通常与跨站点脚本攻击有关,但我想知道的是会话如何在属于单个域的多个子域中保持有效(例如:用户仅登录一次,并且能够使用同一会话访问subdomain1.domain.com和subdomain2.domain.com)。我想我首先需要了解它是如何工作的,但到目前为止,我还没有找到太多与此相关的东西。跨域Cookie访问(或会话)
但是再次,也许我没有问正确的问题。
感谢提前:)
虽然我意识到这通常与跨站点脚本攻击有关,但我想知道的是会话如何在属于单个域的多个子域中保持有效(例如:用户仅登录一次,并且能够使用同一会话访问subdomain1.domain.com和subdomain2.domain.com)。我想我首先需要了解它是如何工作的,但到目前为止,我还没有找到太多与此相关的东西。跨域Cookie访问(或会话)
但是再次,也许我没有问正确的问题。
感谢提前:)
您可以为特定的域设置cookie。
在php中,setCookie()方法包含一个参数,您可以在其中指定顶级域,因此该cookie对所有子域均有效。根据你的标签,我看到你在asp.net工作。这大概也存在ASP ...
对于ASP小的搜索后:
试试这个:
Response.Cookies("CookieName").Domain = ".mydomain.com"
或阅读this
INPROC会话不能保持有效,但是你可以编写您的Web应用程序以允许跨多个子域的Cookie。您将需要设置等于域:
Response.Cookies("CookieName").Domain = ".mydomain.com"
默认情况下,网站的所有cookie在客户端上存储在一起,和所有Cookie与任何请求发送到服务器现场。换句话说,网站中的每个页面都会获取该网站的所有Cookie。饼干的范围
您可以了解更多here。
有关为域设置的cookie的评论允许子域接收该cookie会给你方,但缺少的是会话的一致性。
我认为这非常类似于在服务器场中的服务器之间维护状态的问题,并且解决方案可能确保您的会话存储在两个站点之间保持一致(如果它们不是来自同一'网站'在IIS中)。您可以将会话存储移动到SQL Server(HOW TO: Configure SQL Server to Store ASP.NET Session State)中,这可能有助于实现这一目的,因为每个站点在查找与其提供的cookie相关的会话数据时都会查询同一商店。
我希望能让你走上正轨。
有很多方法可以跨域共享会话数据或cookie数据。最简单的方法是通过共享数据存储在服务器端共享它。但是如果这么简单,你不会问这个问题。
另一种做这件事的方法同样简单。域one.com
包含一些会话数据,如name=aleem
和id=123
,并希望将其传递给two.com
。它会遵循以下步骤:
two.com/api/?name=aleem&id=123
two.com
通过查询参数得到的数据,创建一个与数据的cookie。这个cookie将被存储在two.com
域名下。two.com
然后将重定向到在这种情况下发生的REFERER
是one.com
这是一个简单的场景。域two.com
需要能够信任one.com
而不仅仅是,但它需要知道该请求是真实的,而不仅仅是由用户精心制作的,所以您需要使用公钥/私钥来缓解这个问题。
如果你必须建立一个共同的子域的能力,你可以这样做:
在您的子域的html文件,包括在顶部像这样的JavaScript文件:
<script src="http: //common.domain.com/check.asp"></script>
在检查.asp的,寻找你LOGGED_IN的cookie,如果不存在,显示页说,http://common.domain.com/login.asp使用类似
<%
if (cookie_not_found){
%>
location.href = "http: //common.domain.com/login.asp";
<%
}
%>
一旦一个人提交的用户名密码,提交它返回到相同的login.asp并设置会话cookie(将在common.domain.com域中设置),然后重定向到http://subdomain1.domain.com
。
现在会发生的是,将调用嵌入的“common.domain.com/check.asp”,common.domain.com的cookie将随浏览器一起发送请求。所以你会知道你的会话是否有效,即使你在subdomain1.domain.com。
看标签的伴侣。 – Shoban 2009-06-02 12:42:52
euhm,我没有...否则,我不会写'基于你的标签'... – Fortega 2009-06-02 12:46:52