gpt4 book ai didi

php - 这个脚本有多安全(强化)?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:04:19 26 4
gpt4 key购买 nike

下面的脚本 test.php 旨在放置在我所有 wordpress 站点的特定目录中。它的作用是抓取下面$source地址的文件,解压到它所在的目录下。这就是它的全部意图。

例如,我将在我的中央服务器上有一个仪表板界面,其中列出了存在此脚本的所有网站。然后,我将执行一个 cURL 例程,该例程遍历每个站点并对该脚本执行调用,有效地将更新文件同时发送给所有站点。

调用是这样的...

...processing site 1 update...
http://targetsite1.com/somedeepdirectory/test.php?query=updates.zip

...processing site 2 update...
http://targetsite2.com/somedeepdirectory/test.php?query=updates.zip

...etc until all my sites have been updated.

我的问题是 (1) 这个脚本的安全性(强化)程度如何。以及 (2) 我应该进行哪些检查才能使更多...

我在想,至少我会限制 myquery 的字符数,并检查 myquery 中的负载是否存在恶意的、意外的文件类型?

<?php

//测试.PHP

$source = 'http://mycentralserver.com/protected/'.$_GET['myquery'];
$target = '.';

$out_file = fopen(basename($source), 'w');
$in_file = fopen($source, 'r');
while ($chunk = fgets($in_file)) {
fputs($out_file, $chunk);
}
fclose($in_file);
fclose($out_file);

$zip = new ZipArchive();
$result = $zip->open(basename($source));
if ($result) {
$zip->extractTo($target);
$zip->close();
}

?>

最佳答案

此脚本在当前状态下的安全性非常好。我确实有一些担忧。在任何情况下,您都不得意外下载 .php 文件并将其存储在您的网站根目录中。这是此脚本可能发生的最糟糕的事情,因为它是一个远程代码执行漏洞。文件应下载到特定目录,如果您担心其他人访问此文件,您应该在该文件夹的 .htaccess 中执行“拒绝所有人”。如果此脚本中有任何错误,您应该删除下载的文件。事实上,我建议尽快删除下载的文件。

我担心的是脚本应该优雅地出错。你应该检查以确保你已经获得了你正在寻找的东西。即使该文件不是 .php 文件,它也可以包含 php 代码 <?php ?>然后可以包含()'ed,这会将本地文件包含(LFI)漏洞转变为完全成熟的远程代码执行。

在安全的 php 配置中,allow_url_fopen 应该关闭并且 PhpInfoSec 同意我的观点。这意味着 fopen() 不能用于 HTTP。 allow_url_fopen 默认启用,我在所有生产系统上禁用它。原因是因为我在 Coppermine Photo gallery 中亲自编写了一个远程代码执行漏洞,利用了这种不安全的默认设置。 CURL 应该始终用于 PHP 中的 HTTP,它更安全、更稳定。

关于php - 这个脚本有多安全(强化)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2328819/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com