日期:2014-05-17  浏览次数:20432 次

怎么防止用户手动进入某个页面?
网站根目录下有与INDEX.PHP并列的PRIVATE.PHP页面,我现在只允许它被客户端程序调用,不允许被用户手动进入(比如:http://127.0.0.0/private.php),怎么设置?

------解决方案--------------------
判断他的来源请求地址或获取上一次请求地址

$_SERVER['HTTP_REFERER'];

这个不行可以考虑用js实现
------解决方案--------------------
最优的是$_SERVER['HTTP_REFERER'];做来源监测
另一种是设定session权限鉴定,普通用户session进行跳转或返回404头
可者是通过get或post一个参数来鉴权,对于不知规则的用户来说,突破也很困难
------解决方案--------------------
不一定要用session啊
你在PRIVATE。php 也是设定一个变量
例如 
if($flag == '值')
...
else
exit;...

你客户端调用的时候传这个值到这个页面获取它的值

这个值你可以自己设定
------解决方案--------------------
客户端传递加密数据 服务器端进行解密校对

剩下的不用我说了吧
------解决方案--------------------
1.客户端安装后,生成自己的公私钥,通过HTTPS保护自定义协议将GUID和公钥提交上去。

2,今后客户端连接服务端,首先使用私钥加密GUID,然后同GUID一起提交,服务端根据GUID选择对应的公钥解密验证GUID成功则认为客户端正常以便下发用于SESSION的COOKIE。

其实关键就2点:

1,客户端安装后初次HTTPS连服务端,如果认为服务器可能欺诈则客户端可以要求CA验证服务端发来的证书,否则可以直接信任服务端证书,并通过公私钥加密交换对称密钥完成客户度公私钥的提交。

2,其实就是HTTPS保护下完成信任关系的配置,玩过SCP/SSH的同学应该有数。