【问题标题】:PHP send a parameter from href to another page privatelyPHP 将参数从 href 私下发送到另一个页面
【发布时间】:2018-01-21 00:31:59
【问题描述】:

我用 PHP 创建了一个包含 href 链接的页面:

<a href="http://www.mypage.com?link=myvalue1">
<a href="http://www.mypage.com?link=myvalue2">

...

我在目标页面中使用$_GET['link'] 来获取myvalue1...

问题在于 myvalue1 在 URL 中可见(在 href 链接页面源中也可见),尽管此参数是机密的。

有人知道保护这个过程的方法吗?

非常感谢

【问题讨论】:

    标签: php get href


    【解决方案1】:

    如果您希望数据安全,则不能使用 GET。您需要为此使用 POST(并使用 https 而不是 http 以确保完全安全)。由于&lt;a&gt; 链接只能使用 GET,因此您必须使用表单来创建 POST,例如:

    <form action="http://www.mypage.com" method="POST">
        <input type="hidden" name="link" value="myvalue1" />
        <a href="#" onclick="this.parentNode.submit()">myvalue1</a>
    </form>
    <form action="http://www.mypage.com" method="POST">
        <input type="hidden" name="link" value="myvalue2" />
        <a href="#" onclick="this.parentNode.submit()">myvalue2</a>
    </form>
    

    (请注意,这是一种非常不雅的方式,但你明白了。)

    然后在 PHP 中使用$_POST['link'] 而不是$_GET['link']

    【讨论】:

    • 非常感谢!如果访问者“显示源代码”,值是否可见?
    • 在我的目标页面中我也使用 IFRAME src="....myvalue1" 恐怕这将在源代码中可见
    • 是的,该值在源代码的两个位置都可见,隐藏它的唯一方法是在服务器端处理值并使用 ID 或其他东西引用它。如果不了解用例的更多信息,很难具体说明。
    • 谢谢,对不起,我真的无法在服务器端使用它...实际上,myvalueXX 是上传到服务器端的文件的名称。但我不希望人们看到这些文件的路径并将 URL 提供给其他人......
    • 这完全是另一个问题:“我怎样才能阻止我的用户分享他们的 URL?”它没有简单的答案。但是对于这种情况,也许您可​​以拥有一个包含路径的表并引用具有行 ID 的路径,并具有某种用户访问控制来检查用户是否有权访问该文件?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 2020-08-16
    • 2013-12-26
    • 1970-01-01
    • 2013-01-24
    相关资源
    最近更新 更多