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

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

將 PHP 腳本僅限于其目錄和子目錄

將 PHP 腳本僅限于其目錄和子目錄

PHP
茅侃侃 2022-07-29 16:49:26
我正在制作一個(gè)包含一些圖片庫(kù)的網(wǎng)站。我想做盡可能少的后端。我將圖像分成文件夾。我有一個(gè) PHP 腳本,它獲取由 get 參數(shù)指定的目錄的內(nèi)容。fetchFiles.php?dir=./art. Javascript 在那里發(fā)送一個(gè) fetch,它返回一個(gè)圖像文件名的 JSON 數(shù)組,并使用srcof 創(chuàng)建圖像。我想擁有它,以便 PHP 只能訪問(wèn)它正在執(zhí)行的腳本目錄中的東西,所以有人不能訪問(wèn)服務(wù)器上的所有目錄。fetchFiles.php<?php    echo json_encode(        array_values(            array_diff(                scandir($_GET['dir'], SCANDIR_SORT_ASCENDING),                array('.', '..', 'fetchFiles.php')            )        )    );?>
查看完整描述

1 回答

?
BIG陽(yáng)

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

首先,永遠(yuǎn)不要讓用戶能夠控制直接影響您的代碼的輸入。這種代碼和用戶提供的數(shù)據(jù)的混為一談?wù)菍?dǎo)致代碼不安全的原因。


與其讓用戶決定你的 PHP 應(yīng)該在哪個(gè)目錄中查找,不如讓 PHP 決定它應(yīng)該在哪個(gè)目錄中查找。


代替:

scandir($_GET['dir'], SCANDIR_SORT_ASCENDING);

做這個(gè):

const PICTURES_DIR = '/path/to/pictures/';

scandir(PICTURES_DIR, SCANDIR_SORT_ASCENDING);

如果您必須讓用戶提供輸入的某些部分,那么您至少可以使用白名單方法,而不是僅僅將整個(gè)代碼開(kāi)放給各種漏洞。


$whiteList = ['/path1/', '/path2/', ...];


if (in_array($_GET['path'], $whiteList)) { // It's OK


} else { // Ohnoes :(


}

現(xiàn)在,PHP 有一個(gè)稱為open_basedir限制的東西,它可以防止 PHP 超出某個(gè)基本目錄,但實(shí)際上,如果您發(fā)現(xiàn)自己這樣做只是為了懶得允許任意用戶輸入來(lái)控制您已經(jīng)設(shè)置的代碼自己失敗。


安全性是分層構(gòu)建的。這不是一顆銀彈。


查看完整回答
反對(duì) 回復(fù) 2022-07-29
  • 1 回答
  • 0 關(guān)注
  • 129 瀏覽

添加回答

舉報(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)