SQL インジェクションを簡単に完全に防ぐ方法はあるのでしょうか?

WBOY
リリース: 2016-06-23 14:10:54
オリジナル
892 人が閲覧しました

調べてみたらかなり複雑なようです。
私の考えを述べさせてください:
まず第一に、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 コマンド送信の制約を緩和しました

つまり、いわゆるセキュリティの問題は完全に解消されました。それはプログラマー自身の責任です....

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!