仅允许特定协议查看网页

时间:2014-02-01 06:26:59

标签: php android .htaccess webserver

我正在开发一个Android应用程序,我想知道是否有任何方法可以阻止或者让用户更难以查看特定的网页。

E.g。我的应用程序转到mysite.com/info.php,此info.php显示我的视频位置的URL和数据。

我希望阻止用户获取此URL并获取除Android应用程序之外的视频。反正有吗?

我曾想过使用.htaccess文件和用户/密码,但意识到有人可以嗅探用户并从传出连接传递。

我想知道是否有人有解决方案?

2 个答案:

答案 0 :(得分:1)

如果您在应用程序中加载网页(而不是从浏览器加载),请像这样扩展WebView:

Android Webview loading other URLs

在“shouldOverrideUrlLoading”方法中,您可以根据服务器,目录,页面等过滤任何您喜欢的内容。

.htaccess mods需要rooted访问权限或Android mods(如cyanogenmod)。此外,您还可以在Webview中自定义Web体验。以下是基础知识:

Customizing Android Webview class

答案 1 :(得分:0)

您可以尝试在有限的有效时间内保留令牌,并为您的Android站点的每个查询添加与“秘密”密钥连接的令牌哈希值。

例如,您可以在服务器上创建一个小脚本,该脚本将生成有效时间有限的令牌:

gettoken.php:

 <?php

 $token = date("YmdH");

 echo $token;

 ?>

然后,要对您的网站进行查询,您的Android应用程序应该获取此令牌并从令牌创建哈希,并与“秘密”字符串连接。

如果您可以使用php,这可能看起来像这样:

 <?php

 $token = file_get_contents("http://yoursite/gettoken.php");
 $secret = "secretkey";
 $hash = md5($token.$secret);

 $content = file_get_contents("http://yoursite/&hash=".$hash);

 /// use $content contains a page of your site

 ?>

您的网站应该以这种方式检查哈希:

 <?php

 if(!isset($_REQUEST['hash']))
   die();

 $token = date("YmdH");
 $hash = $_REQUEST['hash'];
 $secret = "secretkey";

 if(md5($token.$secret)!=$hash)
   die();


 /// .... your content here


 ?>

在此示例中,令牌将每小时更改一次,因此如果有人嗅探哈希值,则有效时间不会超过一小时。