0

以下のこの関数は、 XSS攻撃SQLインジェクションを防ぐことができますか?

require_once('security.class.php');
function secure_data($data) {
    $data = mysql_real_escape_string($data);
    $filtered_data = filter_var($data, FILTER_SANITIZE_STRING);
    $secure_class = new security_class();
    $clean_data = $secure_class->xss_clean($filtered_data);         
    return $clean_data;
}

セキュリティクラスはcodeigniterからのものです。

4

1 に答える 1

6

このようにセキュリティを「ブルートフォース」しようとしてはいけません。これらのさまざまなフィルタ/エスケープをすべてのデータに次々に重ねるのはばかげており、実際にはエスケープが意図したとおりに機能しない可能性があります。

これは、ある種類のエスケープに追加された種類の文字が別の種類のエスケープによって削除される可能性があるためです。また、逃げすぎてしまう可能性もあります。

代わりに、実際に実行しようとしていることに固有のエスケープ関数を使用する必要があります。

  • SQLクエリに値を入力する前に、値を実行しますmysqli_real_escape_string()(または、MySQLi / PDOを介してプリペアドステートメントを使用することをお勧めします)。
  • 値をHTML応答にエコーアウトする前に、HTMLエスケープやXSSクリーニングを実行してください。
  • 等。
于 2013-02-27T09:19:01.950 に答える