ホームページ >バックエンド開発 >PHPチュートリアル >SQL インジェクションを簡単に完全に防ぐ方法はあるのでしょうか?
調べてみたらかなり複雑なようです。
私の考えを述べさせてください:
まず第一に、MySQL のすべての種類のデータを一重引用符で追加できるかどうかはわかりません。試してみましたが、整数の前後に一重引用符を追加することに問題はないようです。 。
どのタイプのデータも一重引用符で囲むことができるということが本当の場合は、MySQL ステートメントを生成するときに任意のデータに一重引用符を追加し、mysql_escape_string を使用して受信した文字内のすべての特殊文字をエスケープします。このようにして、受信した文字列を一重引用符で完全に「制限」することができます。
しかし、like 節の後の文字列のエスケープが通常の文字列とは異なるようであるため、これもきっぱり不可能のようです。さらに、AMP の更新にエスケープが含まれる場合、問題が発生する可能性があります。これら 2 つの問題を完全に解決する方法はあるのでしょうか?他にご質問はありますか?
他のデータベース内のすべての種類のデータを一重引用符で囲むことはできますか?
php mysql にはフィルター関数があり、基本的には安心できます。
Niuniu は常に他の人を助けることに非常に熱心です
フレームワークには回転ドアの SQL インジェクション対策メカニズムがあるため、投稿者には PHP フレームワークを使用することをお勧めします。
例: thinkphp、yii
1 つで完了する方法はありません
現在、既知の SQL 攻撃以外の攻撃方法の報告はありませんが、新しい方法が存在しないという意味ではありません
できる場合きっぱり、将来に備えて防御する必要があります (ちょっとした SF)
PHP はまた、SQL 攻撃を防ぐ作業を完了できると考えました
そのため、一度に 1 つの SQL コマンドのみの実行を制限しましたそして、magic_quotes_gpc 自動エスケープスイッチ
しかし、状況は彼らの予想通りではありませんでした。そのように、多くの PHP プログラマーがいわゆる SQL 攻撃について話し続けています
信頼関係を確立できないことを考慮して、PHP は自動エスケープスイッチのサポートを断念しました。エスケープして SQL コマンド送信の制約を緩和しました
つまり、いわゆるセキュリティの問題は完全に解消されました。それはプログラマー自身の責任です....