2011-01-05 5 views
3

SQLインジェクションを使用して最近ハッキングされた問題を修正するためのサイトが用意されています。私が収集できるものから、自動化されたSQLインジェクタを使ってURLのクエリ文字列パラメータにコードを挿入しました。SQLインジェクションのURLクエリ文字列をフィルタリングする - PHP

このサイトは、カスタムCMSビルドであり、日付が少しあります。私は完全な再構築が起こるとは思わない。

これが再び発生しないようにするには、どのような方法が最適ですか?私はPHPの開発者ですが、通常はフォーム上でバリデーションを行うか、WordPress、Codeigniter、Drupalなどで既に組み込まれているこの機能を持つシステムを使用してください。

アイデアや考えは高く評価されます。

おかげ

答えて

3

一つだけの簡単なルールがあります:はすべての変数は(それがどこから来たのかは重要ではありません - ユーザーからか、すでにデータベースから得て何かある)SQLクエリに入れているはず前にmysql_real_escape_string()で浄化してください。

準備クエリ(プリペアドステートメント/プレースホルダ)を使用することもできますが、問題はありません。

+0

完璧、ありがとう! – Robimp

+0

まあ、引用された変数(文字列)。整数と浮動小数点でMRESを実行しないでください。クエリに追加する前にそれらにキャストしてください: ''AND id ='。 (int)$ id' – ircmaxell

+0

@ircmaxell:実際には、OPのために複雑なものを作りたくありませんでした。 – zerkms

2

コードをすべて変更することはできませんが、データベースコードを変更することはできます。もしそうなら、PDOと準備されたステートメントを使ってみてください。あなたがデータベースタイプを指定しなかったので、pdoをお勧めします。 mysqlを使用している場合は、mysqliも準備済みの文を提供すると思います。

+0

ええ、データベースに行く前に変数にmysql_real_escape_string()関数を使用しました。私はそれが起こっていたと思ったよりもstessful /仕事が少なくなりました。答えをありがとう。 – Robimp

+0

@Robimp問題はありません、うれしく思います。 – AntonioCS

関連する問題