この質問に答える予定がある場合は編集してください。少なくとも読んでください。単にタイトルを読んでから、Google の「SQL インジェクション php」を読んで、結果を回答として貼り付けないでください。
まず、SQL インジェクションを防ぐための最善の方法については、多くのリソースが利用できることをよく知っていますが、私の質問は、特に、ほんの少しの努力で十分かどうかについてです。
私が契約している組織は最近、以前の請負業者によって開発されたパートナーの (PHP) Web サイトに重大なセキュリティ上の問題があることが判明したと言われました (私の個人的なお気に入りは、URL に「Emergency」という文字列を使用することで、任意の場所への認証されていないアクセスを取得できることです)。サイト内のページ...)
PHP サイトのセキュリティを確認し、主要な問題を指摘するように依頼されました。このサイトでの以前の経験から、コーディングの標準が本当にひどいものであることを知っています (たとえば、約 5% のバリエーションでページ全体に大量のコードが複製されている、何百もの未使用の変数、ブール値の代わりに $var = "yes" が記述されている、SQL ステートメントが記述されているなど)。デフォルトでは安全でない (一部のページはユーザーの認証を忘れている) など)。このサイトを見直すと、世界には自分たちを開発者と呼ぶ真の馬鹿がいるということを痛感させられます。
これらのコード品質の問題のため、重大または半重大なセキュリティ問題のみを強調したいと思います。サイトのすべての問題に注意すると、レビューには数週間かかります。
私は SQL インジェクションの専門家ではありませんが、他の種類のステートメントを挿入する前に、既存のクエリの引用符で囲まれた文字列を閉じることができなければならないことを理解しています。では、次のコード行で十分でしょうか?
"'".str_replace("'","''",$_POST['var_name'])."'"
このシナリオで $_POST['var_name'] を介した SQL インジェクションが可能かどうかだけで、コードの改善または変更に関する提案には興味がありません。PHP に慣れていない場合str_replace
は、最初のインスタンスだけでなく、最初の引数のすべてのインスタンスを 2 番目の引数に置き換えます。
どんな入力でも大歓迎です。