我希望自己的桌面应用能够点击我网站上的.php
页面。 .php
页面将执行服务器端任务,并将返回指示成功/失败等的HTTP响应。
如何确保只有我的桌面应用才能访问.php
页面?如何防止机器人,抓取工具和黑客访问该页面?
我应该在网址中有一个随机短语吗?例如:
http://www.website.com/s3g8k0d1q6/myphpfile.php
答案 0 :(得分:1)
一种简单的方法是进行基本的密码检查。假设“命中”是指POST
,请将其放在PHP的顶部:
if($_POST["password"] !== 12345) { header("HTTP/1.0 404 Not Found");die(); }
这将返回您的通用404,除非您的桌面应用程序发送正确的密码。
(Please don't use 12345
,这只是一个例子)
答案 1 :(得分:0)
访问Web服务的大多数桌面应用程序都需要应用程序密钥。然后,该应用程序密钥用于向Web服务发出请求。每个应用程序在用户注册时都会获得自己随机生成的密钥,或者桌面应用程序可以在后台静默执行此过程。
如何对用户/桌面应用程序进行身份验证,以便提供应用程序密钥取决于您。它可以是电子邮件/密码对,也可以是只有桌面应用程序知道的密钥,或通过电子邮件发送给每个用户的密钥,允许他们激活桌面应用程序。
密钥存储在数据库中,您可以在表中添加一个额外的列,以指示密钥是否已被撤销。
您可以使用SSL来帮助保密应用程序密钥。
如何将密钥传递给服务并不重要。它可能是$ _GET,$ _POST或Http标头的一部分。 PHP支持从所有这些方法中提取详细信息的功能。
一旦你收到了$ _POST ['key']的请求,你就会检查数据库以查看该密钥是否存在,并且没有被撤销。如果找到,那么您将执行请求或提供其他响应。
对于通知PHP用户一定要防止SQL注入攻击。这是一个快速示例代码,但未经过测试。
<?php
if(!empty($_POST['key']))
{
$con = mysql_connect('localhost','mathew','1234') or die("can't open db");
mysql_select_db('my_db',$con);
$key = mysql_real_escape_string($_POST['key']);
$result = mysql_query("SELECT * FROM Keys WHERE Revoked = 0 AND Key = '$key'");
if(!empty(mysql_fetch_array($result)))
{
// perform web service here
}
}
这将是最简单的方法,并且如果使用SSL执行则提供基本安全性。如果您没有SSL,那么有人可能会嗅到密钥,但这取决于您的应用程序是值得花费时间进行攻击。
答案 2 :(得分:-1)
您可以使用robots.txt文件:
User-agent: *
Disallow: myfile.php
当然,它不会阻止恶意机器人或机器人忽略robots.txt文件,但搜索引擎爬虫等合法机器人可能会被劝阻。