【问题标题】:PHP: How to securly set active link on page using includesPHP:如何使用包含在页面上安全地设置活动链接
【发布时间】:2013-05-25 00:24:53
【问题描述】:

在较早的帖子“PHP 使用包含在页面上设置活动链接”中有一条评论“这太 waaaay 太可破解了”。你能向我解释一下它是如何被破解的,以及我如何用更安全的方法复制这个想法。

$page_id = $_REQUEST['page_id'];

 <ul>
          <li class="<?php echo ($page_id == "Home" ? "active" : "");?>">
 <a href="/">Home</a>
          </li>
          <li class="<?php echo ($page_id == "Apps" ? "active" : "");?>">
 <a href="#">Apps</a>
          </li>
          <li class="<?php echo ($page_id == "Forums" ? "active" : ""); ?>">
 <a href="#">Forums</a>
          </li>
        </ul>

我正在为网站构建我的第一个插件,如果您在主页或统计信息等页面上,我需要将 php 设置为活动的链接。因此安装可能位于 www.website.com/home/plugin/statistics。我需要能够设置类

  • 如果他们在页面上而不知道我的插件安装在他们的网站有多少层,则统计信息将处于活动状态。
  • 【问题讨论】:

    • 您发布的代码没有安全风险。但是,如果您在执行其他操作时不清理用户输入,则可能存在安全风险。
    • 但是,您不一定想将?page_id=Forums 附加到您网站上的每个网址。
    • 请链接到之前的问题。您提到包含,如果您基于$page_id 的值包含,则其中可能存在漏洞。
    • @MichaelBerkowski 看起来好像来自这个答案 - stackoverflow.com/a/8476437/689579
    • @Sean Hmmm,实际上似乎没有任何有害的东西。它实际上非常整洁。可能发生的最坏情况是最终用户在 url 中手动提供 ?page_id=

    标签: php


    【解决方案1】:

    更好的方法可能是这样的:

    在页面文件(about.phpindex.php 等)中,在页面顶部提供唯一标识符:

    <?php
    $page_id = 'home';
    require_once('_menu.php');
    

    将您的导航分离到要包含的文件_menu.php

     <ul>
              <li class="<?php echo ($page_id == "Home" ? "active" : "");?>">
     <a href="/">Home</a>
              </li>
              <li class="<?php echo ($page_id == "Apps" ? "active" : "");?>">
     <a href="#">Apps</a>
              </li>
              <li class="<?php echo ($page_id == "Forums" ? "active" : ""); ?>">
     <a href="#">Forums</a>
              </li>
            </ul>
    

    【讨论】:

      猜你喜欢
      • 2012-01-18
      • 1970-01-01
      • 2021-05-09
      • 2013-04-04
      • 2013-12-28
      • 2014-10-06
      • 2014-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多