如何在php中保护cookie?
今天我完成了我的项目编程。 现在我正试图在我的代码中找到一些bug。 我意识到,当我想更改我的信息(如用户)时,我可以通过篡改数据(ad don更改标题数据)编辑我的用户id,并且可以通过篡改日期更改我的级别(从用户更改为管理员):/ 此代码用于设置cookie如何在php中保护cookie?,php,cookies,Php,Cookies,今天我完成了我的项目编程。 现在我正试图在我的代码中找到一些bug。 我意识到,当我想更改我的信息(如用户)时,我可以通过篡改数据(ad don更改标题数据)编辑我的用户id,并且可以通过篡改日期更改我的级别(从用户更改为管理员):/ 此代码用于设置cookie setcookie('level',$login['level'],time()+120*120*48); setcookie('username',$login['username'],time()+120*120*48); setc
setcookie('level',$login['level'],time()+120*120*48);
setcookie('username',$login['username'],time()+120*120*48);
setcookie('uid',$login['uid'],time()+120*120*48);
当用户试图在其come-on数据库中添加注释时,我使用$\u COOKIE['uid'],这只是一个数字(你知道的)
我想给你们这个代码,我用它来启动会话,并在每个文件中启动
include("cookiesset.php");
ob_start();
session_start();
if($_COOKIE['level'] != 1){
...
}else{
...
}
这是我头上的饼干
uid=1; level=1; username=asd; PHPSESSID=ldr48bua487pjmtvohp53tr662; LoginForm=r9imqbnj2csfrmsu50i9kn0q54
好的,我怎么能修好它?
我想保护我的网站
如果没有解决办法,我想问。谢谢你们给我的一切, 我试图创建一个新的列,它有一个用户密钥,但它需要更多的时间来创建和编辑项目中的所有文件,我试图学习会话,以及我是如何找到它的工作的 它很容易学,(在过去,我认为它不容易) 现在我用
$_SESSION["level"] = $login['level'];
$_SESSION["username"] = $login['username'];
$_SESSION["uid"] = $login['uid'];
在我从数据库中检查用户名和密码之后
这些都在文件中
ob_start();
session_start();
if($_SESSION['level'] != 1){
...
}else{
...
}
从篡改数据和其他工具
PHPSESSID=d4i4itbp8p7ri4juvqd690t9a5
只是我看到了PHPSESSID
谢谢大家,
现在一切都很好,非常感谢@Asfo和@miken32给我一个好建议
我希望如果我的代码中有任何错误,您可以编辑它并帮助我:)
编辑
谢谢你所做的一切
但我意识到,当我从PHPSESSID中删除(d4i4itbp8p7ri4juvqd690t9a5)时,我将出现“文件路径泄漏”错误,
我通过put错误报告(0)修复了它;会话后_start();对于那些希望自己的脚本没有bug的人来说,一切都会好起来的;)
然后,停止在cookies中使用“uid”和level,创建一个类似“user\u role”之类的表,然后创建一个包含加密密钥的cookie,例如
sha256('really\u big\u big\u random\u string')
,将该值存储在数据库中,以便您可以在表(列)中执行类似于:[key][uid][level username]的操作从键为cookie值的表中进行选择,然后获取结果,这样cookie中就不会显示任何重要的值,但从表中获取这些值会更安全一些。@Asfo这是一个非常好的主意。如果没有其他解决方案,我会尝试它。你可以直接在cookie中使用加密,但仍然不安全,因为它们可以“反转”它们(幸运的话,找到值,然后交易它)…我认为如果你真的需要这些值,这是更安全的方法,另一种选择是,如果您的cookie仅在用户在站点上的同时存在,则使用会话…不要使用cookie,请使用。@Asfo no您的第一个想法很好,cookie很好,因为您不想长时间登录,而且我对会话不太了解,我只是将会话用于带防火墙的控制面板。
error_reporting(0);
ob_start();
session_start();
if($_SESSION['level'] != 1){
...
}else{
...
}