3

「汚染されている可能性のある文字列をエコーし​​ようとしています」というエラーが表示されました。エラー行は、

<form action="?action=export&val=<?php echo $_GET['val'];?>&export=yes" method="post">

この問題を解決するにはどうすればよいですか。

4

4 に答える 4

3

汚染機能を有効にしました。潜在的な XSS コード (汚染された文字列) を関数に渡すと、警告が発行されます。

php.ini でtaint.enable=を設定することで無効にできます0

他のユーザーが示唆しているように、urlencode(), urlrawencode()(違いに注意してください) を使用するとhtmlspecialchars()、警告を取り除くことができます。また、データベースで$_GET,$_POST変数を使用する場合は、必ずエスケープするmysqli_real_escape_string()か、準備済みステートメントを使用するか、PDO を使用してください。

于 2013-03-28T10:16:40.063 に答える
1

このエラーは、ユーザーが指定したとおりに変数が URL に挿入されることを示しており、これは潜在的なセキュリティ リスクです。代わりに使用urlencode($_GET['val'])して、値をエスケープし、リスクを中和します。

于 2013-03-28T10:16:32.870 に答える
0

変数を直接使用$_GET[]するのではなく、まず変数を処理し、SQL インジェクションやその他の有害なものがないことを検証してから、処理された値を表示します。

于 2013-03-28T10:17:18.937 に答える
0

Taint エクステンションが有効になっています。

http://php.net/manual/en/intro.taint.php

echo(s) を実行するときに htmlspecialchars() を使用してみてください

于 2013-03-28T10:16:28.603 に答える