2012-05-11 23 views
0

私はSQLインジェクションから自分のインプットを保護することを考え始めています。私はPDOとmysqliについて読んだことがあり、それらのテクニックを使用しています。私はSQLインジェクションに対する保護を研究していましたが、私は技術について考えました。ユーザーからの入力があるときはいつでも、入力文字列をスキャンして「 '」または「DROP」の出現を検索し、その文字列にこれらの文字が含まれている場合は、進めることはできません。この手法は、多くのSQLインジェクションを防止しますか?PHP SQLインジェクション防止技術

ありがとうございました。

+0

PDOを単独で使用すると、プリペアドステートメントを使用するため注入が防止されます。さらに何もする必要はありません。 – ccKep

+1

ここに記載されているSQLインジェクションを防止する最善の方法http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php – itsmeee

答えて

3

PDOまたはSQLiを使用してください。

正しく使用され、意図どおりに使用されている場合、両方とも停止します。 DROPという言葉を止めるような尺度を使うのは愚かなことでしょう - 誰かが「dropbox」と入力すると想像してみてください。

+0

実際には完全にそれを停止し、準備文とデータ検証を行いません実行されなければならず、それでも100%安全であるとは限らない場合でも、アプリケーションのすべての部分がこれらの要件に従わない場合でもまだ可能性があります。 – mhvvzmak1

4

手作業で厳密なテストを経て、自分で実装しようとしていない方法をお勧めします。

SQLのテーブルを削除するための新しい表記法を追加するとどうなりますか?代わりに '切り捨て'を使用するとどうなりますか?これは完全ではありません。

2

入力をエスケープし、準備済みの文を使用することを検討してください。これにより、ほぼすべてのSQLインジェクションの弱点が取り除かれます。特定の単語をスキャンすることは、通常、合法的なユーザーを悩ませるため、ひどい習慣であり、決定されたハッカーを止めることはありません。

-1

最良の方法は、PDOと一緒に、ユーザデータが異常ではないことを確認するために厳格なパターンに対して、すべてのユーザー入力を検証することで書類を作成 - あなたはまた、XSSを防ぐことができ、この方法は、しかし、すべてサニタイズすることは通常有益ですあなたが何かを適切に検証せず、ユーザーが悪意のあるコードを実行する可能性がある場合に備えて、ユーザーが生成した出力も表示されます。

+0

この回答が投票されたのはなぜですか?明らかに、これはデータの完全性を検証し、安全な操作を保証する実際の方法であるため、すべての主要な開発でこのパターンを使用しています。 – mhvvzmak1

関連する問題