如何让应用程序使用私有的.php网页?

如何让应用程序使用私有的.php网页?,php,security,http,httpwebrequest,bots,Php,Security,Http,Httpwebrequest,Bots,我想让我的桌面应用程序点击我网站上的.php页面。.php页面将执行服务器端任务,并返回指示成功/失败等的HTTP响应 如何确保只有我的桌面应用程序才能访问.php页面?如何防止机器人、爬虫和黑客访问该页面 我应该在URL中有一个随机短语吗?例如: http://www.website.com/s3g8k0d1q6/myphpfile.php 一个简单的方法是进行基本的密码检查。假设“hit”是指POST,请将其放在PHP的顶部: if($_POST["password"] !== 12345

我想让我的桌面应用程序点击我网站上的
.php
页面。
.php
页面将执行服务器端任务,并返回指示成功/失败等的HTTP响应

如何确保只有我的桌面应用程序才能访问
.php
页面?如何防止机器人、爬虫和黑客访问该页面

我应该在URL中有一个随机短语吗?例如:

http://www.website.com/s3g8k0d1q6/myphpfile.php

一个简单的方法是进行基本的密码检查。假设“hit”是指
POST
,请将其放在PHP的顶部:

if($_POST["password"] !== 12345) { header("HTTP/1.0 404 Not Found");die(); }
这将返回您的通用404,除非是您的桌面应用程序发送了正确的密码


12345
,这只是一个示例)

您可以使用robots.txt文件:

User-agent: *
Disallow: myfile.php

诚然,它不会阻止恶意机器人或忽略robots.txt文件的机器人,但可能会劝阻搜索引擎爬虫等合法机器人。

大多数访问web服务的桌面应用程序需要应用程序密钥。然后使用该应用程序密钥向web服务发出请求。当用户注册时,每个应用程序都会获得自己随机生成的密钥,或者桌面应用程序可以在后台静默地执行此过程

如何验证用户/桌面应用程序以提供应用程序密钥取决于您。它可以是电子邮件/密码对,或者只有桌面应用程序才知道的密钥,或者通过电子邮件发送给每个用户的密钥,允许他们激活桌面应用程序

这些键存储在数据库中,您可以向表中添加一个额外的列,以指示该键是否已被吊销

您可以使用SSL帮助对应用程序密钥保密

如何将密钥传递给服务并不重要。它可以是$\u GET、$\u POST或Http头的一部分。PHP支持从所有这些方法中提取细节的功能

一旦您在say$_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
   }
}

使用公共和私有加密。。。。桌面上的冰球。。在你的服务器上是私有的…@Baba:你有这个的ref吗?好的,我假设这个需要SSL,否则密码会在POST请求中以明文发送?这取决于你说话的安全程度。你可以使用SSL,但这并不需要它。但是如果不使用SSL,POST请求将包含明文密码,不是吗?正确,它不会阻止一个专门的黑客。您的问题只提到机器人/爬虫等,它们将无法从您的应用程序中查看帖子。@CJ7您是否担心机器人或专用黑客?很抱歉下载投票,但这提供了零安全性,这正是问题所要求的。@Mathew澄清一下,在发布帖子时它没有要求安全性。抱歉,你的答案没有错。这根本不能回答问题。