Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用会话保护我的PHP站点?_Php_Security_Session_Cookies - Fatal编程技术网

如何使用会话保护我的PHP站点?

如何使用会话保护我的PHP站点?,php,security,session,cookies,Php,Security,Session,Cookies,我试图了解一个好的方法来保护我的网站免受攻击。我目前正在使用cookies方法。然而,经过一些网络调查后,我发现出于安全原因,cookie不适合使用。所以我的另一个选择是使用会话 我读了这篇文章。在Anurag Jain的回复中,他表示该站点应该使用https而不是http,这样会话id就不会被监听 但有几件事我不明白 当用户登录站点时。我将运行一个查询来检查凭证是否与用户名和密码匹配。然后我会将一些信息存储到不同的会话中,即用户ID、完整用户名、团队名称、访问级别 登录并创建会话后,我可以在会

我试图了解一个好的方法来保护我的网站免受攻击。我目前正在使用cookies方法。然而,经过一些网络调查后,我发现出于安全原因,cookie不适合使用。所以我的另一个选择是使用会话

我读了这篇文章。在Anurag Jain的回复中,他表示该站点应该使用https而不是http,这样会话id就不会被监听

但有几件事我不明白

当用户登录站点时。我将运行一个查询来检查凭证是否与用户名和密码匹配。然后我会将一些信息存储到不同的会话中,即用户ID、完整用户名、团队名称、访问级别

登录并创建会话后,我可以在会话启动后创建会话id。之后,我可以将会话与IP地址一起保存在数据库表中。但在这之后,我如何每次都进行安全检查,以确保该用户是真正创建会话的用户,而不是黑客

如果会话id被破坏了,那么如何保护站点呢?如果攻击者能够复制相同的IP地址,难道不能使用会话id登录吗?另外,如果我希望许多用户从同一办公室、同一网络、同一外部IP地址使用它,这又如何工作呢


我从一篇文章中获得了很多信息。

,因为他们的$\u session['which']将匹配您的数据库表行列。当然你应该使用https,如果你使用MySQL,我会使用AES_加密和AES_解密。@PHPglue,你能更具体一点并解释一下吗?什么是$\u会话['whatever']?不能破坏$\u会话['whatever']?是的,我使用的是MySQL 5.6.13,因此我可以使用您列出的函数。整个问题听起来好像您到目前为止还没有真正理解会话是什么。在PHP页面的最顶部是:session_start;。然后假设您随机生成一个PHP sha1String,并将其放入数据库中。当您的用户登录时,您将真正检查他们的用户名和密码。然后从数据库中获取该值,并按如下方式分配:$\u SESSION['arbitral\u name']='mysqli->query result Object property here';。现在在其他网页上查询数据库:ifisset$\u SESSION['arbitral\u name']&&$\u SESSION['arbitral\u name']==='mysqli->query result Object property'{/*执行更多查询以获取特定于用户的数据*/}SSL是一个好主意,由于它使窃听攻击变得如此困难,几乎不可能,你可能不需要担心ISP会这样做,但你应该与公共wifi和咖啡馆wifi运营商合作,他们通常不那么负责。这就是说,一个保护高尔夫得分的网站可能不需要像银行一样关注这个问题。因此,这在很大程度上取决于你在保护什么。