我只是想到了一些关于确保治疗的事情,这让我很困扰。有人能帮我解决这个问题吗?
好吧,让我解释一下我是怎么想的。(别担心,我会马上讲到重点的)
<?php
if(!isset($_SESSION['login'])) {
$_SESSION['login'] = false;
}
?>因此,最基本的是,无论$_SESSION['login']将永远存在。挺干净的?也许吧。
好吧,假设你想要一个用户登录。(离重点更近)
<?php
if($_SESSION['login'] === false)
{
if(isset($_POST['login-form']))
{
// execute login code . . .
// if the user had logged in successfully
if($success === true)
{
echo "Successfully logged in.";
$_SESSION['login'] = true;
$_SESSION['username'] = $_POST['username'];
// remember, I just wrote up an example,
// and everything would be filtered and sanitized
// if this were production code
}
}
}
?>好吧,另一件事是如何设置这件事。(快到了)
<?php
if($_SESSION['login'] === true)
{
// get database user information where username is $_SESSION['username'].
// also, the database table: users, would have unique usernames,
// they can't be the same.
}
?>好吧,你看到我的想法了。但是,如果有人将$_SESSION['login']编辑为true会发生什么情况呢?然后他们将$_SESSION['username']更改为他们想要的用户名?这意味着有人可以黑他们想要的任何帐户。如果他们正在构建一个存储用户密码和重要数据的应用程序,那么没有人希望这样做。
所以问题是,我怎样才能防止这种情况发生?因为您可以通过进入developer-tools(chrome)并进入控制台并使用javascript更改cookie/会话。
我要不要再做一张表格,再核对一遍?但这就是重点,所以如果你们中的一个能帮我解决这个问题,那就太好了。
发布于 2016-11-10 01:31:39
用户在浏览器中拥有的会话的唯一部分是cookie中的会话ID。句号。
用户无法在本地查看或编辑会话数据,这些数据都存储在服务器上。
现代PHP的会话生成也相当可靠,使得外部实体很难猜测有效的会话ID,如果您使用SSL,在当今时代,您几乎不可能在传输过程中盗取会话cookie。
https://stackoverflow.com/questions/40518675
复制相似问题