第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在用于 Cronjobs 的 PHP 腳本中,在運(yùn)行它們之前將 IP 地址列入白名單的風(fēng)險(xiǎn)是什么

在用于 Cronjobs 的 PHP 腳本中,在運(yùn)行它們之前將 IP 地址列入白名單的風(fēng)險(xiǎn)是什么

PHP
慕村225694 2023-03-04 14:44:29
我的服務(wù)器上有一些 PHP 腳本,用于定期的 cron 作業(yè)(例如,用于每日和諧和更新排行榜)。為了防止外部人員手動(dòng)運(yùn)行這些腳本(http://url/script.php例如通過(guò)在瀏覽器中運(yùn)行),我包含了以下代碼以在運(yùn)行實(shí)際腳本之前檢查 IP 地址。其中XX.XX.XX.XX代表我自己網(wǎng)絡(luò)的IP地址。    $remote = isset($_SERVER["REMOTE_ADDR"]) ? $_SERVER["REMOTE_ADDR"] : '127.0.0.1';    $whitelist = array('XX.XX.XX.XX', '127.0.0.1');    if (!in_array($remote, $whitelist))    {        exit;    } 所以現(xiàn)在我有以下問(wèn)題:這有多安全?有什么風(fēng)險(xiǎn)?我怎樣才能使它更安全?還有其他(更好的)解決方案嗎?附言。我之前的問(wèn)題已關(guān)閉,因?yàn)橛腥苏J(rèn)為這個(gè)問(wèn)題與PHP IP Address Whitelist with Wildcards重復(fù)。但我不是這樣的!這個(gè)問(wèn)題是關(guān)于在白名單中使用通配符,而這個(gè)問(wèn)題是關(guān)于這個(gè)解決方案的安全性和風(fēng)險(xiǎn)。
查看完整描述

2 回答

?
不負(fù)相思意

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊

所提出的方法并不完全安全。

PHP 充當(dāng)文本預(yù)處理器,這意味著在 Web 服務(wù)器網(wǎng)關(guān)錯(cuò)誤的情況下,可以使用 mime 類型的文本/html 發(fā)送腳本內(nèi)容,這存在泄露敏感數(shù)據(jù)(例如 SQL 數(shù)據(jù)庫(kù)密碼或(s)ftp 帳戶。

如果腳本中控制的 IP 地址是共享(或動(dòng)態(tài)傳輸)地址,則公開(kāi)放置的管理腳本也存在未經(jīng)授權(quán)執(zhí)行的風(fēng)險(xiǎn)。Cron 腳本是使用 php-cli 執(zhí)行的,因此不需要 Web 服務(wù)器網(wǎng)關(guān),如果它在公共目錄之外,則不需要在腳本中進(jìn)行 IP 分析。

使用 curl 等遠(yuǎn)程執(zhí)行可能是將管理腳本放置在 www 服務(wù)器公共空間的唯一原因。這通常是一個(gè)薄弱的解決方案,因?yàn)槟_本會(huì)使用其他設(shè)置執(zhí)行 php 解釋器(而不是 php-cli),通常執(zhí)行時(shí)間非常有限。但是,如果出于某種原因有必要,它應(yīng)該位于一個(gè)單獨(dú)的目錄中,該目錄的訪問(wèn)僅限于使用 .htaccess(和/或 .iptables)的特定 IP 地址,并使用 htpasswd(基本身份驗(yàn)證)分配的用戶名和密碼。

理想情況是當(dāng)www服務(wù)器的public目錄(以下簡(jiǎn)稱public)只包含靜態(tài)內(nèi)容(img,css,js...文件),應(yīng)用觸發(fā)器位于父目錄。示例結(jié)構(gòu)為:

/home/username/domainname/(apps,crons,public,tmp)

apps 目錄應(yīng)包含所有應(yīng)用程序文件和目錄。公共目錄應(yīng)該只包含靜態(tài)內(nèi)容(為了在某些子目錄中排序)和指向應(yīng)用程序主文件的符號(hào)鏈接,可以使用以下命令獲得:

ln -s ../apps/app.php index.php

某些服務(wù)器配置不允許使用符號(hào)鏈接。然后你可以使用包含以下內(nèi)容的 index.php 文件:

<?php
include('/home/username/domainname/apps/app.php');

這個(gè)解決方案有點(diǎn)糟糕,因?yàn)槿绻W(wǎng)關(guān)出現(xiàn)故障,目錄結(jié)構(gòu)就會(huì)暴露。但是,敏感數(shù)據(jù)仍然是安全的,因?yàn)?Web 服務(wù)器無(wú)法顯示不存在的文件的內(nèi)容。

假設(shè) php 文件本身位于公共 Web 服務(wù)器之外,所提供的 IP 分析可用于顯示授權(quán)地址的部分內(nèi)容。但是,如果這些是整個(gè)網(wǎng)站,我更愿意使用 iptables 或 .htaccess 來(lái)管理對(duì)它們的訪問(wèn)。


查看完整回答
反對(duì) 回復(fù) 2023-03-04
?
神不在的星期二

TA貢獻(xiàn)1963條經(jīng)驗(yàn) 獲得超6個(gè)贊

這有多安全?

實(shí)際上,只要您控制地址(127.0.0.1 可以,XXX.XXX.XXX.XXX 可能不行),它就非常安全。我所說(shuō)的相當(dāng)安全的意思是,有人濫用該系統(tǒng)的可能性很小,濫用 Web 應(yīng)用程序其余部分的可能性也不大。

有什么風(fēng)險(xiǎn)?

有人可能會(huì)從外部調(diào)用您的腳本,如果他們有辦法以某種方式假設(shè) IP 地址 XXX.XXX.XXX.XXX,或者欺騙 systemm 相信他們有。

我怎樣才能使它更安全?

您可以在原始調(diào)用中包含一個(gè)秘密,并根據(jù)同一秘密的哈希值對(duì)其進(jìn)行檢查。即使有人能讀懂劇本,秘密也不會(huì)泄露。

if (!array_key_exists('key', $_GET)) {

    die('Access denied');

}

if (sha1($_GET['key']) !== '713dca7cf928f23a2347cae828d98879629e1e80') {

    die('Access denied');

}

也可以將腳本放在web根目錄之外require,通過(guò)語(yǔ)句調(diào)用。這樣,要么 PHP 子系統(tǒng)工作,腳本無(wú)法讀取,要么不工作,顯示的只是一個(gè)無(wú)法訪問(wèn)的目錄的名稱。您甚至可以合并這兩種方法:


if (sha1($_GET['key']) !== '713dca7cf928f23a2347cae828d98879629e1e80') {

    die('Access denied');

}

$realScript = $_GET['key'];

require $realScript;

現(xiàn)在,唯一可以包含的腳本是名稱具有特定 SHA1 哈希的腳本,沒(méi)有其他腳本(沖突的風(fēng)險(xiǎn)實(shí)際上可以忽略不計(jì):您需要與有效文件名發(fā)生沖突,以及創(chuàng)建此類文件名的方法). 所以你知道腳本是有效的,但除非在調(diào)用中提供名稱,否則整個(gè)構(gòu)造將無(wú)法工作,它甚至不會(huì)告訴攻擊者原因。


curl http://yoursite.internal.address/cron/cron.php?key=../scripts7ab9ceef/mycron.php

還有其他(更好的)解決方案嗎?

是和不是。使用命令行界面調(diào)用腳本同樣安全,并且不需要工作的網(wǎng)絡(luò)服務(wù)器。如果需要,它還允許以不同的用戶身份運(yùn)行。


另一方面,它需要安裝一個(gè)命令行界面,這可能會(huì)產(chǎn)生其他安全問(wèn)題,即使使用相同的用戶和主目錄,這兩個(gè)界面的行為仍然可能有微妙的不同(或不那么微妙:你可能有一個(gè) PHP7.3 Web 模塊和一個(gè) PHP5.2 CLI 安裝,反之亦然,這將使具有短數(shù)組語(yǔ)法(或具有類似結(jié)構(gòu)if(empty(some_function($_GET['x'])))的腳本甚至無(wú)法加載到一個(gè)或另一個(gè)界面中。


總而言之,對(duì)curlor 的crontab 調(diào)用lynx可能更易于維護(hù)和使用,即使它無(wú)疑效率較低。


查看完整回答
反對(duì) 回復(fù) 2023-03-04
  • 2 回答
  • 0 關(guān)注
  • 130 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)