我正在编写一个应用程序,它在客户端上有 JS,在服务器上有 php,在服务器上打开会话及其“在 php 脚本中”我通过从 DB 检索并存储在 $_SESSION["uID"]
最初的唯一 ID 识别每个用户我认为这在将用户数据从 javascript 发送到 php 时就足够了,因为会话将处理识别问题,并且每个用户请求都将由其自己的会话接收,因此没有用户会话会与另一个会话冲突..我对吗?还是我必须使用另一种技术?
我必须将用户ID从js发送到php吗?或者在php中声明就足够了?
我是否必须使用会话 ID 或其他东西?
4 回答
通过 js 发送用户 ID 会使您的应用程序不安全。任何人都可以成为任何人。如果会话由cookies设置,在php端使用该会话就足够了。您不必通过 js 发送会话 ID,因为它会由您的浏览器通过 cookie 自动发送。
可以肯定的是,一旦在 php 脚本的开头调用 session_start(),您将能够访问 $_SESSION["uID"]。如果你已经为用户提供了一个唯一的 uID,你只需要在 php.ini 中使用它。此外,如果您使用 uID 从 js 到 php 进行一些调用,将存在巨大的安全漏洞,因为 javascript 很容易受到干扰,并且可能传递“错误”的 uID。所以是的,我会坚持你所说的,我的结论是:是的,在 php 中声明就足够了 :)
花一些时间阅读会议。
当你测试它时发生了什么?
通常会话 id 是通过 cookie 传输的。cookie 应该在 xmlhttp 请求中发送到服务器。Cookie 是通过 HTTP 请求在浏览器上设置的。
可以通过其他方式发送会话 id,并通过 javascript 设置会话 cookie - 但是在您了解基础知识之前,对此的解释将没有多大意义。
Php 让客户端将会话 ID 存储为 cookie,该 cookie 在每次请求时发送。但是,如果用户不保留 cookie,会话将被取消。更糟糕的是,如果用户从不安全的位置登录,攻击者可能会获得他的会话 ID,系统会错误地将他识别为受害者。
The truth is there is no absolute way to identify a client. A session id good enough for most cases, but if you need an extra layer of security, use accounts in combination with IP checking and sessions.