1

我创建了一个只允许一个人使用的 PHP 页面,没关系,但是当不允许的用户在地址栏中写入时,view-source:tstwebsite.com/test/page.php它会向用户显示页面的来源我可以阻止用户的源代码吗?这是我的代码,它只允许一个用户使用这个页面。

$aiwab = mysql_query("SELECT * FROM `table`");
while($aiwa = mysql_fetch_array($aiwab)){
$alo = $aiwa['allowed'];
if ($alo == 2 ){

}else{
echo "<script>javascript:history.go(-1)</script>";
}
}

那么如何才能阻止用户查看源代码呢?

4

2 回答 2

5

坦率地说,使用 javascript 来“阻止”用户是愚蠢的。javascript 可以被禁用/忽略/绕过,就像您在查看源“hack”中看到的那样。如果您依赖客户合作,则永远无法建立“安全性”。

使用适当的服务器端身份验证,例如HTTP 基本身份验证,来保护脚本。

于 2013-07-04T19:36:51.917 回答
2

如果您只想快速将其从客户端身份验证更改为服务器端,则可以进行以下更改:

if ($alo == 2) {

}
else {
    // Redirect them by sending a HTTP Location header
    header("Location: www.yourdomain.com/path/to/another/page");
}

请注意,只有在将任何输出发送到浏览器之前header()调用上述解决方案才有效(必须在消息正文开始之前发送 HTTP 标头)。这与您当前的解决方案非常相似,不同之处在于重定向是由服务器上的代码而不是浏览器中的代码引起的。让某人绕过您的身份验证,因为它允许他们在浏览器中加载页面,而无需运行客户端代码。view-source

这只是一个快速修复,应该有助于说明客户端和服务器端身份验证之间的区别。如果这不仅仅是为了弄乱和学习一点代码,那么你真的应该更多地了解安全性。另请注意,您正在使用的 mysql 函数目前已被弃用,您应该使用mysqli, 或pdo

您还需要阅读客户端代码与服务器端代码的使用,只是为了了解哪些任务使用什么以及为什么。

于 2013-07-04T19:49:28.973 回答