2011-02-09 11 views
0

magic_quotes_gpcバックスラッシュの意義?

私たちは皆、それを嫌うし、多くのサーバは、まだこの設定を使用して故意に十分な一部が提供する、それは安全ですが、私は同意しなければならないと主張します。

私が持っている質問は、バックスラッシュは何のために必要なのでしょうか? 私はそれらを完全に削除したいと思いますが、必要があるかわかりません。

その後、他のSQLインジェクションEDIT

答えて

2

magic_quotes_gpc()は、外部ソースからPHPに送信されたすべてのデータがすぐにデータベースに挿入されるという誤った考えに基づいて提供されました。データベース以外の場所にそのデータを送信したい場合は、PHPが挿入したスラッシュを削除して、必要な作業を2倍にする必要がありました。

また、すべてのデータベースがエスケープしているメタキャラクタにスラッシュを使用するわけではありません。 \'はMySQLではうまくいますが、MS Accessでは一重引用符をエスケープすると実際には''になります。PHPが不必要な作業をしていただけでなく、多くの状況で、まずは誤った作業をしていました。

さらに、addslashes(基本的にmagic_quotes_gpc()が内部的に呼び出すもの)は、特にUnicodeが使用されているすべてのSQLインジェクション攻撃を処理できません。 addslashesはASCIIレベルで動作するstr_replace("'", "\\'", $string)という形で賞賛されています。多くのUnicodeシーケンスは通常のasciiのように見えますが、単純な形のaddslashes()が大混乱の後にSQLメタキャラクタに変わります。

+0

私はあなたのお問い合わせを読んで楽しんで、私は何か新しいことを学びました、そして、これはそれが無意味な100%であることを私に安心させた最高の答えだと感じます。 – blanknamefornow

1

これは、ウェブをコーディングする場合には、非常に深刻な問題であるSQL injectionの悪用を防ぐためのものです。

SQLインジェクションを避けるより良い方法である準備済みのクエリを調べる必要があります。

+0

私は安全に処理されるクエリを用意していますが、スラッシュが追加されているため、実際に追加する必要はありません。 – blanknamefornow

+0

次に、それらを無効にしてください。 – ceejayoz

1

PHPでこの機能を使用する理由はありません。

これは正式に廃止され、今後のバージョンには存在しない理由です。

それを保つ理由があれば、開発者コミュニティはそうしていたでしょう。

関連する問題