Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.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中保护cookie?_Php_Cookies - Fatal编程技术网

如何在php中保护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

今天我完成了我的项目编程。 现在我正试图在我的代码中找到一些bug。 我意识到,当我想更改我的信息(如用户)时,我可以通过篡改数据(ad don更改标题数据)编辑我的用户id,并且可以通过篡改日期更改我的级别(从用户更改为管理员):/ 此代码用于设置cookie

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{
...
}