会话令牌 - 它是如何工作的?

8

我想知道如何最好地保护会话。我搜索了一些答案,但很多都太复杂了。

如何防止会话被劫持?我读了很多关于“会话令牌”的文章,但真的不明白它们的用途是什么。这如何防止会话劫持?

我知道你不会在会话中保存像密码之类的东西,但是你可以安全地存储什么?权限(像一个会话变量,用于跟踪用户级别。每次打开页面时,会检查会话变量。如果不是某个特定数字,就会显示“拒绝访问”消息)?或者你应该如何最好地处理这个问题?

谢谢!


可能是重复的问题:如何防止 PHP 会话劫持?这些方法好吗? - Stephen
1个回答

7
您基本上可以在会话中存储任何内容,但通常被认为是“最佳”实践的是不包括任何安全敏感信息(例如密码),以防安全层被破坏。预防会话劫持的第一步是不通过URL传递session_id()。用户很愚蠢,他们会在博客上发布带有其会话ID的链接,这将基本上使点击该链接的任何人都能访问他们的会话。因此,建议将会话ID存储在用户cookie中。同时,您需要过滤和转义所有用户输入。如果存在XSS注入,并且用户能够注入javascript,则他们将能够轻松读取您的cookie。从那里开始,通常要在网站上的任何重要操作上重新生成会话ID,以防止会话固定攻击。这很简单,大概就是这样。

嗨,谢谢您的回复。我现在正在阅读更多关于会话固定的内容。但是我经常听到的会话令牌呢?这不是必要的吗? - Bv202
你可能指的是CSRF(参见http://shiflett.org/articles/cross-site-request-forgeries),它与会话劫持没有任何关系。 - John Cartwright
1
正确的PHP函数名称是session_regenerate_id()。 - Heitor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接