【问题标题】:PHP secure URL variablesPHP 安全 URL 变量
【发布时间】:2019-12-16 15:34:41
【问题描述】:

我在保护我的网址时遇到了麻烦。

我有那个:

http://localhost/Projet_4/P4_Code/index.php?action=listCommentMember&id=15

如果有人想将"15" 更改为其他内容,他可以轻松做到。我正在努力避免这种情况。 我试图通过放置isset 来保护id,如下所示:

if (isset($_GET['id']){
        myFunction
} else {
    echo 'wrong id'; 
}

但它不起作用。

【问题讨论】:

  • 为什么不将 id 存储在会话变量中?
  • 什么意思?
  • if (isset($_GET['id']){
  • 你的思路是错误的。网址始终是可编辑的,您的后端应决定是否有人可以访问该资源。

标签: php url


【解决方案1】:

只需在$_GET['id'] 之前添加(int)。

这个动作会将任何字符串转换为数字,不会影响数字。


$s1 = 'fsdfsdf';
$s2 = '43';
$s2 = '';
echo (int)$s1;
echo (int)$s2;
echo (int)$s3;

输出:

0
43
0

此外,您可以在 if 语句中添加 is_numeric($_GET['id'])。

if(is_numeric($_GET['id'])){
   // your stuff
} else {
   echo 'nope';
}

【讨论】:

  • 如果用户例如将 15 更改为 9 会怎样?
  • @executable,那么应该检查有效值。
  • 他想“保护” id
  • @executable,只有他的数据库知道哪个id 是有效的。通过此步骤确保整数值足够。
  • ... 如果它必须来自数据库,那么在此阶段将值转换为 int 是没有意义的 - 因为您 将 将使用准备好的当然是带有绑定参数的语句。
猜你喜欢
  • 1970-01-01
  • 2014-12-20
  • 2011-04-02
  • 2019-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-16
相关资源
最近更新 更多