我有以下代码:
<a class='list-group-item active' href='index.php?galleryId=$gallery[0]&id=gallery'>
<h4 class='list-group-item-heading'>$gallery[2]</h4>
<p class='list-group-item-text'>$gallery[3]</p>
</a>
我不希望用户能够在URL中编辑galleryId,因为他可以通过编辑URL中的值来访问不适合他的图库。
这是网址:http://localhost/bilderDb/php/index.php?galleryId=2&id=gallery
是否可以通过a标签传递POST,以便用户无法看到它。或者还有其他解决方案吗?
感谢您的帮助!
编辑:我想我不清楚。用户可以看到galleryId。我不希望他能够改变它。当它在GET变量中时,他可以在URL中更改它。
答案 0 :(得分:0)
有几种方法可以保护图库免受其他用户的侵害
您可以使用slug名称(gallery_id中包含的随机字符串,如:fun-at-school-90i8j3)而不是使用gallery_id,因此很难了解其他用户的gallery slug。
您可以在图库页面上使用包含图库ID和类型的隐藏输入字段。
您可以使用安全方法加密gallery_id。
放置服务器端验证以检查与用户关联的图库访问权限,每次检查图库ID是否与有效用户相关联。
答案 1 :(得分:0)
是否可以通过标签传递POST
并非没有使用<a>
毫无意义。
所以用户无法看到它。
用户可以看到他们的浏览器在POST请求中发送的数据。这是他们的浏览器。
或者还有其他解决方案吗?
认证。授权。
如果用户不应该访问某个网址,那么,如果他们提出请求,请验证他们的身份(例如让他们登录)并使用403进行回复。
答案 2 :(得分:-1)
您好我认为您应该创建两个自定义函数,例如encodeUrlParameter()
和decodeUrlParameter()
,其自定义逻辑为encryption
和description
逻辑。
parameters
,这样用户就无法以有意义的方式调整它,因为您害怕关闭。 user
访问级别实现了一个参数,并对其进行了加密。所以它会实现你的目标。 no tempering with data
和access level
也是简单的方式。 session
id未获得他的许可,则用户无法执行操作。 例如,使用此Github Repo代码Here
在这里,您将获得encrypt()
和decrypt()
等功能。很简单
但我给的是一个示例代码。
<?php
function encrypt($string, $key=5) {
$result = '';
for($i=0, $k= strlen($string); $i<$k; $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)+ord($keychar));
$result .= $char;
}
return base64_encode($result);
}
function decrypt($string, $key=5) {
$result = '';
$string = base64_decode($string);
for($i=0,$k=strlen($string); $i< $k ; $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)-ord($keychar));
$result.=$char;
}
return $result;
}
$en = encrypt('1',6);
echo "Encrypted: " .$en;
echo '<hr />';
echo "Decrypted: " .decrypt("$en",6);
?>
现在,您可以在使用之前以encrypted
和paramerter name
或value
传递decrypt
数据,或者以加密形式和encryption
传递这些数据。
<强> OutputImage 强>
注意简而言之,您可以使用decryption
和laravel new project_name
的GitHub代码,也可以编写自己的功能代码。