如何使用get方法以安全的方式发送用户id


how to send user id in secure way using get method

我正在尝试保护我的用户id。我必须寻呼user.phpuser_account.php。我正在通过锚标签将用户发送到user_account.php

user_account.php页面中,它显示了这个普通的user_id(类似于25、26、23)。这对我的应用程序是潜在的安全威胁。我必须根据正在发送表单user.php page的user_id进行一些操作。

我知道,首先我必须加密,然后解密

这是我的代码:

echo '<a href="user_account.php?id='.$single_id.'">'.$user_name.'</a>'; 

我从我的user.php页面发送它。而useraccount.php页面只需通过get方法获取即可。

但我如何才能安全地发送它,并防止用户操纵它

.任何帮助之王都将不胜感激

防止滥用用户id的最佳方法是对用户进行身份验证,并检查经过身份验证的用户是否有权访问该用户。

旁白

一旦散列算法已知,其他答案所建议的任何其他"加密"方法都是可逆的。你可以在其他事情上加盐,但我强烈建议不要破坏你自己的安全,尤其是在这种非常特殊的情况下。您希望一个足够通用的方法能够在应用程序的其他领域中重复使用,从而确保安全,否则您最终会得到意大利面条式的代码。

此外,这几乎不用提,但您也应该使用SSL。

只需使用base64_encode()和base64_decode()方法加密和解密您的id,如下所示:

user.php

echo '<a href="user_account.php?id='.base64_encode($single_id).'">'.$user_name.'</a>'; // encrypt id

user_account.php

$single_id = base64_decode($_GET['id']); // get id and decrypt it.

您可以在此处使用crypt()

加密$user_id

<?php
// Get the hash of $user_id
$single_id = crypt($user_id);
echo '<a href="user_account.php?id='.$single_id.'">'.$user_name.'</a>';
?>

现在将其解密为以下

if (hash_equals($single_id, crypt($user_id, $single_id))) {
   echo "User Id matched";
}