php - 保护对远程 php 脚本的调用

标签 php security

  1. 我在服务器上有一个更新数据库的 PHP 脚本。

  2. 我希望能够从远程调用此脚本,无论是从另一台服务器还是 我的本地主机 PC 使用 GET,或从浏览器使用 AJAX,

  3. 但我不希望任何人能够调用此脚本,除非 允许。

到目前为止,我只是在脚本中添加了一段代码来验证 GET 中的某个 pin,即

//myscript.php

if( isset($_GET['pin']) && $_GET['pin'] === '1234' )
{
   //update the DB...

通过这种方式,远程调用者必须知道 pin,即

file_get_contents(http://remoteserver.com/myscrip.php?pin=1234); //will work
file_get_contents(http://remoteserver.com/myscrip.php?pin=5678); //will NOT work

这看起来很简单,我想知道它是否安全。

还有哪些其他可能的更安全的替代方案(可能不会太复杂)?

例如,我读到过有关使用随时间变化的散列的信息,但这是否值得,如何实现?

最佳答案

您可以使用密码保护该文件夹(如果您使用的是 cpanel 或 plesk,则可以轻松完成)并使用 curl 访问该 url。

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_USERPWD, $username . ':' . $password);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);

关于php - 保护对远程 php 脚本的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7529937/

相关文章:

iis - 使用 OpenSSL 的 IIS 上不受信任的证书

php - 从 php 到 javascript 传递顺序安全的值

php - 如何在mysql中获取值之前打印总和

php - PDO::__construct(): php_network_getaddresses: getaddrinfo 失败:名称或服务未知

PHP 正则表达式 preg_match_all : Capturing text between multiple square brackets

java - AndroidKeyStore key 生成期间的 IllegalArgumentException(无法解析的日期)

security - 经典 ASP —— 防止 HTTP header 注入(inject)

php - 使 mysql 连接静态化是个好主意吗?

php - 我应该为多个设备创建多少个 cookie?

security - 如何在不使用 CAPTCHA 组件的情况下防止批量漏洞扫描?