我正在尝试保护我的用户id。我必须寻呼user.php
和user_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";
}