0

重複の可能性:
PHPでユーザー入力をサニタイズするための最良の方法は何ですか?
最高のPHP入力サニタイズ機能は何ですか?
究極のクリーン/セキュア機能

目標:DBに入力する前に、テキストボックスからのすべての入力を適切にサニタイズし、DBに出力します。私のユースケースでは、データ入力を排除せずに潜在的な問題を防ぐ必要があります。また、不正な形式のエンコーディングの問題を防ぐために、HTTPヘッダーとMETAタグの両方でcharsetが明示的にUTF-8に設定されています。DBもUTF-8に設定されています。

仕様:PHP、MySQL、Apache

サンプルコード

    function secureinput($input)
    {
       $input = htmlspecialchars($input, ENT_QUOTES ,'UTF-8');
       $input = strip_tags($input); //fail-safe for anything that gets through
       $input = mysql_real_escape_string($input);

       return $input;
    }

質問:これはまだどのような攻撃ベクトル(XSS、SQLインジェクションなど)に対して脆弱ですか?

助けてくれる人に感謝します。質問への回答を探すためにいつも最初にSOに目を向けてきましたが、これは私の初めての投稿です。残念ながら、今回は私の問題に答える他の質問を見つけることができず、そのほんの一部しか見つかりませんでした。

4

1 に答える 1

1

XSS 攻撃

ユーザーが入力したコンテンツを出力するたびに htmlspecialchars() を使用することで、XSS 攻撃から確実に保護することができます。

SQL インジェクション

Steve Friedl は、彼の Web サイトで SQL インジェクションと入力サニタイズの制限の例をいくつか提供しています: http://www.unixwiz.net/techtips/sql-injection.html

コードmysql_real_escape_string() を使用した SQL インジェクション攻撃から保護されている可能性がありますが、パラメータ化された SQL を使用して SQL インジェクションのリスクを完全に排除した方がよいでしょう。非推奨の mysql 関数の代わりに、PHP で PDO または mysqli を使用すると、より安全になります。

于 2012-07-28T20:21:37.163 に答える