【问题标题】:Hide a get php url隐藏获取 php url
【发布时间】:2011-01-17 07:24:16
【问题描述】:

我有一个包含所有用户详细信息的动态表,还有一个点击链接指向另一个页面,我们可以在其中查看有关特定用户的特定课程详细信息。 我的问题是我希望隐藏 ID 并且也不能使用 post 方法。有没有办法隐藏 url 或任何方法来做到这一点

echo "<td>"  . $lead['lastname'] . "</td>";
echo "<td>" .'<a href="course_complete_sup.php?id'.$row1['userid'].'" class="lien2" value='.$row1['userid'].'/>Course Completed</a>' ."</td>" ;
echo "<td>" .'<a href="course_progress_sup.php?id='.$row1['userid'].'" class="lien2" value='.$row1['userid'].'/>Course Progress</a>' ."</td>" ;
echo 

谢谢

【问题讨论】:

  • id是基于当前登录的用户吗?
  • 安全通过默默无闻!==安全。您应该确保您的应用安全,而不是隐藏必要但可能很容易猜到的信息。
  • 不是基于只显示特定用户信息的层次结构
  • 我没有发现任何问题?为什么不能暴露这些 ID?
  • 因为任何人都可以修改id并拥有信息..出于安全问题...

标签: php mysql url get


【解决方案1】:

不,如果您使用 GET,参数将在 URL 中可见。您可以尝试立即重定向,但如果安全是问题,这并没有真正的帮助。

您不能使用 POST 是否有特殊原因?如果您需要隐藏该信息,那确实是您的最佳选择。

【讨论】:

  • 我有两个页面,1 个完整页面,1 个来自 2 个不同链接的进度页面。出于安全措施本身的考虑,我需要隐藏它们...
【解决方案2】:

好的,我用的是君权的方法..

$_SESSION['rand_seed'] = rand(1,100000);

回声“”。 $lead['姓氏'] 。 "";

echo "<td>" .'<a href="course_complete_sup.php?id='.md5($row1['userid']).$_SESSION['rand_seed'].'" class="lien2" value='.$row1['userid'].'/>Course Completed</a>' ."</td>" ;

然后当它指向页面 course_complete_sup.php

$ids = $_GET['id']; $salt = $_SESSION['rand_seed']; 未设置 ($_SESSION['rand_seed']);

if ($salt < 1)
{
  header("location: access-denied.php");

}

否则 {

 list($var1) = explode($salt, $ids, 2);

}


$encrypt = mysql_query("select distinct(userid)  from course_complete ");
{
while($row = mysql_fetch_array($encrypt))
{

  $r= md5($row['userid']);
   if( $r== $var1){
                $id = $row['userid'];
   } 

}

}

它有效!!!!!!!!!!

感谢君权和你们……

欢呼ssssss

【讨论】:

    【解决方案3】:

    阻止用户看到 url 的唯一方法是在服务器上执行所有操作,这通常过于复杂且速度较慢。你应该重新设计你的代码,这样它就不会是一个安全问题,因为你不能看到 url,但如果你不能,那么你必须在链接中发送一个哈希或任意数字。

    例如,您可以创建以下链接:

    '<a href="newaction.php?action='.md5("user_id=" . $row1['userid'])).'" class="lien2" />Course Progress</a>'
    

    在不了解您的 php 代码的情况下,我想您可以在 newaction.php 中执行以下操作:

    <?php
    // ... a bunch of code ...
    if ($_GET['action'] == md5("user_id=" . $row1['userid'])) {
        course_progress_sup($row1['userid']);
    }
    // .. a bunch more code ...
    ?>
    

    我提醒你,这是一个坏主意,你应该重新考虑如何处理这个问题,但如果必须的话,你可以做类似的事情。

    【讨论】:

    • 为了得到这个,我们应该使用 sql 加密定向页面上的 id 并匹配 GET id.. 这需要很长时间.. 但这是一个好主意......但它会保持静态因为任何数字都可以在 md5 中加密
    • 如果这是一个问题,那么您可能希望在哈希中使用随机种子。你可以这样做:$_SESSION['rand_seed'] = rand(1,100000);然后将其放入每个 md5: ....href="newaction.php?action='.md5("user_id=" . $row1['userid']) . $_SESSION['rand_seed']).'"类.....
    • naaaaa....我试过了...但是在匹配 get 和 md5 转换的值时...它不起作用...
    • 我已经尝试过这样做并获取信息.. 但是如何删除随机种子以便将 id 与数据库匹配
    猜你喜欢
    • 2013-09-27
    • 2013-01-03
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    • 2019-02-21
    • 1970-01-01
    相关资源
    最近更新 更多