我已经制作了一个PHP代码。 (myphp.php)
if(count($_GET) === 1 && isset($_GET['secretcode'])) {
echo "my personal data";
}
else{
echo "Not Found"
}
因此,用户需要浏览类似“http://server.com/myphp.php?secretcode”的内容才能查看PHP。
问题是,这样做是否安全? 有人可以绕过PHP吗?如果是这样,如何使其更安全?
这样的事情可能会起作用
//.htaccess
<Files *.php>
Deny from All
</Files>
但我希望每个人只有输入正确的参数才能访问它。
感谢。
答案 0 :(得分:0)
根据您的信息的敏感程度,不,这不安全。
如果它只是你写的一首你不想让别人读的十四行诗,那可能就够了。如果这是您的个人银行帐户信息,那么这是一个非常糟糕的安全措施。
GET参数是URL的一部分,您访问的URL会记录并存储在第三方服务器(如ISP)及其上游提供商上。如果您碰巧在开放的WiFi上访问此网址,那么该网络上的任何其他人都能够看到您正在访问的网址,并会导致您的“秘密”网址泄露。如果您尝试通过代理管理您的访问权限,您可以保护这些人的密码,但您只是将该信息泄露给代理。
您可以通过仅通过HTTPS浏览到您的秘密URL来在某种程度上缓解这种情况,但即使这样,您可能会在管理员在您的计算机上安装了根证书的网络上意外访问它(例如雇主的笔记本电脑),在这种情况下你的秘密现在已经出局。无论您是否使用SSL / TLS,您通常也无法保护您正在访问的域名。
正如@ chris85在评论中提到的,你并没有真正检查这个秘密是否正确。我需要访问您的秘密信息只是参数名称,因为您还没有检查该值是否等于某事。
您也可能在自己的使用中遇到可用性问题。如果您需要使用除“秘密”代码之外的多个查询参数,则您的保护将拒绝您访问。