0

page1.php

<form method="post" action="page2.php">
<textarea name="tryit" cols="!20" rows="10"></textarea>
</form>

2.phpページ

<?php
echo filter_input(INPUT_POST, 'tryit', FILTER_SANITIZE_SPECIAL_CHARS);
?>

ユーザーにシステムコードを実行させたり、システム関数を呼び出したりしたくないだけです。

ありがとう

4

3 に答える 3

1

フラグを使用するとHTMLの特殊文字がエンコードされ、XSSの脆弱性が防止されるためfilter_input()、コードはXSSの観点から安全です。FILTER_SANITIZE_SPECIAL_CHARS

マニュアルから:

FILTER_SANITIZE_SPECIAL_CHARS
HTML-escape'"<>&およびASCII値が32未満の文字。オプションで、他の特殊文字を削除またはエンコードします。

それは次と同じです:

echo htmlspecialchars($_POST['tryit']);

コードを別のコンテキスト、たとえばSQLクエリに移動すると、安全ではなくなります。特殊な文字エンコードは、XSSの防止に固有のものです。

于 2013-01-04T18:47:11.167 に答える
0

htmlspecialcharsを使用します。これ& ' " < >により、すべての特殊なhtml文字が置き換え&amp; &#039; &quot; &lt; &gt;られます。以降、通常の文字として表示されます。

于 2013-01-04T18:48:08.530 に答える
0

このコードスニペットは、オペレーティングシステムの機能やシェルコマンドを実行しません。

filter_inputシステム機能も実行しません。

page2が受け取ったものはすべてテキストとしてのみ表示さPOSTれます。

に保存されている値$_POST['tryit']は影響を受けません。その変数に再度アクセスするとき(またはHTMLエスケープされたバージョンをどこかに保存するとき)は、個別にサニタイズする必要があります。

filter_input一般的には使用されていません。代わりに、特定のエスケープ機能を使用できます。

于 2013-01-04T18:52:13.763 に答える