0

テキストファイルがあるとしましょう。次のような「有害な」コードが含まれています。

<?php phpinfo(); ?>

または、SQL インジェクション コード、html リンクなど、その他の可能性もあります。

ここに私のスクリプト例があります:

$content = file_get_contents('harmfullcode.txt');

今明らかに $content 変数はその有害なコードを保存します。

私の質問は、そのような情報を変数に格納しても安全ですか?

たとえば、

echo $content;

それは有害です。

しかし、変数で何もしない場合、変数が有害なコードを保持しても安全ですか?

より明確にするために編集されました:

これの違いは何ですか?

$content = file_get_contents('harmfullcode.txt');
$safevar = removebadstuff($content);
echo $safevar;

VS

$content = removebadstuff(file_get_contents('harmfullcode.txt'));
echo $content;

2 番目の例では、悪いものを $content に割り当てる前に削除しています...?? 私は概念を理解しようとして、PHPセキュリティに慣れていません。ありがとうございました。

4

4 に答える 4

0

有害なコードがfile_get_contents()PHP 自体の脆弱性または同様の機能を標的にしている場合を除き、それを変数に格納するだけで安全です。それを出力することは安全ではない可能性があり、実行evalすることは間違いなく悪い考えです。

于 2012-10-25T06:09:39.417 に答える
0

この変数をどのように扱うかによって異なります。

あなたの例でecho $content;は、有害ではありません。実行せずに、有害なコードを表示するだけです。

有害な例:

eval($content);

exec($content); // any System program execution function

//preg_relace with e modifier, this is deperecated

// and so on .....
于 2012-10-25T06:10:09.647 に答える
0

出力または評価されない場合は、変数に任意の文字列変数として格納してもかまいません。

于 2012-10-25T06:07:54.213 に答える
0

ちょっとほぼ同じです。unset $content2 番目の例ではローカル変数を の最初のパラメータとして作成するだけなので、最初の例で使用することをお勧めしますremovebadstuff

PHP の文字列はバイナリセーフであることに注意してください。

必読: 究極のクリーン・セキュア機能

于 2012-10-25T06:53:46.137 に答える