隐藏来自数据库的PHP URL参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了隐藏来自数据库的PHP URL参数相关的知识,希望对你有一定的参考价值。

所以我是php的菜鸟,我正在尝试保护我使用PHP获取唯一页面的url参数,目前他们对跨站点脚本开放,并想知道如何解决这个问题?

 <?php  if ($result = $link->query("SELECT league_name, role, start_date, 
 end_date, joincode, active
            FROM leagues
            WHERE unique_id='$unique_id'", mysqlI_USE_RESULT))


            while($row = $result->fetch_assoc()){ ?>
              <tbody>
             <tr>
              <td scope="row" data-label="League Name"><a class="action" href="leagueinfo.php?league_name=<?php echo $row['league_name']; ?>&joincode=<?php echo $row['joincode']; ?>"><?php echo $row['league_name'] ?></a></td>

             </tr>
            <?php }  $result->close(); ?>
          </tbody>
              </table>

              <?php mysqli_close($link); ?>

所以我需要找到一种方法来确保不会发生这种情况:

Script has been entered into url

答案

您可以使用PDO,预准备语句提供了一种防止SQL注入的好方法:1。使用空值作为占位符准备查询。 2.将值绑定到占位符。 3.执行您的查询。

//PDO
$stmt = $link->prepare("SELECT league_name, role, start_date, end_date, joincode, active FROM leagues WHERE unique_id=:id");
$stmt->bindParam(':id', $id);
$stmt->execute();
另一答案

有几个不同的值需要编码:

  • 应该为MySQL转义$unique_id,或者应该参数化查询。 (见prepared statements。)
  • url里面的league_namejoincode应该是url编码的,这也恰好删除了html特殊字符。 (见rawurlencode
  • 锚文本中的league_name应该是html编码的(参见htmlspecialchars)。

以上是关于隐藏来自数据库的PHP URL参数的主要内容,如果未能解决你的问题,请参考以下文章

php如何隐藏图片的真实地址

在保持相同行为的同时隐藏 url 中的 #hash 片段?

php隐藏图片真实地址代码??

.htaccess rewritecond/rule 并隐藏 url 参数

PHP:通过图像提交按钮传递选择和隐藏输入的值

URL的PHP​​和哈希/片段部分