我在页面上有一个链接,我想将变量发送到这样的php文件:
href = "php_file.php?qry=$query"
$ query变量包含一个查询,我想在php文件中对mysql进行查询。
我的问题是,我不希望用户“看到”我传递的内容。我想使用$ _POST,但据我所知,这是不可能的。
还有其他简单方法吗?
由于
答案 0 :(得分:6)
这是不可能的。即使您使用POST,也会非常不安全。
我的建议是将查询放在$ _SESSION变量中并在php_file.php中引用它。如果你有多个查询,你可以给它们一些ID并在会话中存储id =>查询对。 / p>
快速举例:
<?php
session_start();
$_SESSION["query1"] = "SOME QUERY";
$_SESSION["query2"] = "SOME OTHER QUERY";
?>
<a href='php_file.php?q=query1'>Execute first query</a>
<a href='php_file.php?q=query2'>Execute second query</a>
//in php_file.php
session_start();
$query = $_SESSION[$_GET["q"]];
显然这非常简单,您可能希望为其添加更多“安全性”(检查空参数等),但至少您的查询对用户不可见。
答案 1 :(得分:1)
是的,如上所述使用会话:http://www.php.net/manual/en/book.session.php
另外,不要将URI参数粘贴到SQL查询中:http://php.net/manual/en/security.database.sql-injection.php
答案 2 :(得分:0)
您可以使用会话或Cookie。但是,如果您试图让客户端向您发送客户端无法了解的信息,我认为您需要重新考虑这个问题。
我希望$ query不是SQL!
答案 3 :(得分:0)
除了加密(甚至那时)如果客户端有数据,就没有办法阻止客户端确定它的价值。
绝对不要在客户端放置查询!存储$ _SESSION中的任何内容。这样,实际数据就在服务器端。它永远不会发送给客户端,所以他们永远不会看到它。
答案 4 :(得分:0)
您显然希望通过隐藏或混淆SQL代码来阻止用户在浏览器中加载 php_file.php?qry = DELETE + FROM + users 等内容。我建议你重新考虑整个想法:你要求被黑客入侵。
您可以对服务器端代码中的操作列表进行硬编码,然后只传递一个标识符,例如:
php_file.php?qry=fetch-totals
然后
<?php
if( $_GET['qry']=='fetch-totals' ){
// ....
}
?>
答案 5 :(得分:0)
如果您不希望他们实际查看链接中的查询参数,请尝试任何URL缩短服务(google will help)。当用户被重定向到您时,将此参数保存到会话,然后再次重定向但没有任何查询参数。这个解决方案只会在以下情况下工作,再一次,链接只是丑陋而且你不想这样离开它。正如mynameiscoffey所说,精明仍然能够弄明白。
还有cookies,隐藏表格,等等BTW。
答案 6 :(得分:0)
理论上,您可以使用加密并解密服务器上的值。然而,开销很大。无论如何,足够精密的用户都会得到它。要隐藏的值的明文将在某个点存在于变量中;他们需要的只是恰当时间的调试器和断点。
在此方案中,加密的复杂程度无关紧要。您不必一直使用RSA或其他一些方式;像钥匙的XOR就足够了。你在这里保护免受随意窥探,而不是对抗坚决的攻击。</ p>