只是尝试在我的网站上做一些安全措施,并试图找出确保身份证的最佳途径。
实施例: http://localhost/page.php?id=90 至: http://localhost/share/22349234987sdsdf9sdf87423498asf9
我正在使用HTACCESS来完成共享部分。但是想隐藏'90'并试图阻止任何人只是添加随机数来尝试接收不同的响应。
有关如何创建这样的内容的任何想法,或者是否存在适用于实现的内容?
安全是一个因素,所以只是想找到最好的解决方案......
答案 0 :(得分:3)
隐藏ID是默默无闻,而不是安全。
如果你想要很好的默默无闻,请查看PHP中的mcrypt函数。确保在编码和解码之前附加一个盐,否则很容易猜到加密/解密。
请注意,其他任何人都可能会偶然发现您的网址,完全打败这些网址。如果你想要安全性,我也可以通过HTTPS使用某种形式的HTTP Auth。
答案 1 :(得分:2)
我的一位朋友实施了一种方法,用当前会话令牌和秘密签署所有GET请求以防止CSRF攻击。
但您要做的是拥有一个可以与其他人共享的网址。
您可以创建类似于原始网址的MD5哈希,并将其保存在数据库中。
现在,当打开/ share / someLongId时,您可以在数据库中检查该哈希所属的URL,并将用户重定向到该URL。
另一种可能性是首先使用GUID而不是自动递增ID。这样,所有ID都只会更长,而且不容易猜到。
答案 2 :(得分:1)
根据您是否需要它(URL)是否持久,您可以冷却:
非持久性:做这样的事情:
function getLink($id) {
$random = md5(uniqid());
$_SESSION['links'][$random] = $id;
return "http://localhost/share/$random";
}
echo getLink(10);
然后:
function getTrueId($id) {
if(isset($_SESSION['links'][$id]) {
return $_SESSION['links'][$id];
} else {
die("Unknown link!");
}
}
这将使链接仅可用于当前会话中的当前用户。如果您需要持久性,您可以生成随机ID并将它们与真实ID一起存储在数据库中,但这可能毫无意义,因为可以使用随机ID代替真实ID来执行相同的操作......