ホームページ >バックエンド開発 >PHPチュートリアル >3行のコードのセキュリティについて尋ねる_PHPチュートリアル
3 行のコードのセキュリティについて質問します
$js =explode(',',$_GET['js']);
foreach ($js を $file として) {
echo file_get_contents('./public/js/'.$file.'.js')."n";
}
攻撃者がコードをコピーしてサーバー上の PHP ファイルを読み取る方法はありますか?
[ ]
お答えしましょう
D8888D 返信内容 -------------------------------------------------- -----------------------
$js = $_GET['js'];
$js =explode(',',$js);
$error = null;
!is_array($js) && $error +=1;
$str = null;
foreach ($js を $file として) {
eregi('[[:punct:]]',$file) && $error +=1;
$files = "./public/js/{$file}.js";
if (is_file($files))
$str .= file_get_contents($files)."n";
}
if($error!==null)
exit('エラー');
エコー $str;
?>
コードをコピー [ ]
D8888D 返信内容 -------------------------------------------------- -----------------------
ユアンさんありがとう
エラーにどう対処するかは気にしませんが、私が知りたいのは、ハッカーが .js 接尾辞の制限を回避して PHP ファイルにアクセスできるかどうかです
とにかく、ハッカー以外は使用できません
error_reporting(0) をエラーに追加するだけです
;
この記事を読んでください
[url=http://www.111cn.cn/html/18/t-3418.html]リンクタグ http://www.111cn.cn/html/18/t-3418.html[/url]
D8888D 返信内容 -------------------------------------------------- -----------------------
習慣はしっかりと身につける必要があります。プロセス管理は良好です。
メンテナンス用です
D8888D 返信内容 -------------------------------------------------- -----------------------
そうだ、そうだ、
制限を回避するのは簡単だと思いますか
D8888D 返信内容 -------------------------------------------------- -----------------------
コードを見てください。,
ファイルを読み取り、ループで読み取ります...どのプログラムがこの構造を必要とするのかわかりません...
D8888D 返信内容 -------------------------------------------------- -----------------------
悪くない
D8888D 返信内容 -------------------------------------------------- -----------------------
私のコードはjsをロードするためのもので、リクエストの数を減らすためにすべてのjsを1つのファイルにまとめます
たとえば
jquery、fckeditor をロードする必要があり、thnikbox を必要としないページは、js=jquery、fckeditor を使用できます
コードは非常にシンプルで、効率はファイルを直接ロードするのと同じになるはずです
D8888D 返信内容 -------------------------------------------------- -----------------------
ページ上にどれだけの js ファイルがあっても、スクリプト化できるのは 1 回だけです
D8888D 返信内容 -------------------------------------------------- -----------------------
$_GET
によってアップロードされたファイルは含めないでください
PHP にはリモート ファイルを含めることができます