哪个更安全,管理会话令牌作为URL参数或cookie?

时间:2014-09-24 02:56:07

标签: php security session cookies

如果您的网站有基本用户帐户以及管理员控制面板,那么最佳做法就是为基本用户设置单独的会话(可以让他们记住我'),然后分开用于管理员访问的会话(例如,在不活动10分钟后,您可以强行过期)。

那就是说,处理 admin 会话令牌的更安全的方法是什么 - 作为URL中的参数,还是作为cookie? (假设在数据库中跟踪令牌)。

每种方法的安全隐患是什么?特定于PHP,您可以使用PHP会话方法创建多个会话cookie,还是必须创建自己的会话令牌cookie?

3 个答案:

答案 0 :(得分:1)

Cookie更安全,特别是如果您使用HTTPS并设置HTTP onlySecure标记。

前者阻止任何JavaScript代码读取cookie值,以防你有任何XSS个漏洞,但是如果发现任何漏洞,最好保护它们以防止其他类型的攻击,如注入键盘记录程序。 / p>

后者确保cookie仅通过HTTPS连接传输。如果没有它,MITM攻击者可以将另一个请求重定向到HTTP网站http://www.example.com(其中example.com是您的网站),然后截取您的网站设置的会话Cookie。

在URL中存储会话ID是一个坏主意,因为它们存储在浏览器历史记录中,默认情况下会记录它们(在代理服务器和服务器上),如果是管理员,它们可能被referer标头泄露跟随从您的网站到其他地方的链接(或者即使您的管理网站引用外部图像)。

答案 1 :(得分:0)

使用通过https发送的Cookie。这比标准cookie更安全,比使用URL params更安全。 有关更多详细信息,请查看php.net上的php文档: http://php.net/manual/en/session.security.php

答案 2 :(得分:0)

Cookie通常是更安全的选择。

Url params进入日志。特别是在许多Web /应用程序服务器中默认记录GET参数。此外,URL参数可能以许多意外方式泄漏。你知道Referer标题可能发生的泄漏吗?这只是一个例子https://isc.sans.edu/diary/When+does+your+browser+send+a+%22Referer%22+header+(or+not)%3F/16433它主要是一个小漏洞,但它确实发生了。