[PHP-users 6317] Re: magic_quotes_gpc の設定

Naofumi Kondoh php-users@php.gr.jp
Tue, 19 Mar 2002 21:36:39 +0900


ソフト工房の近藤です。

Sunao Kiyosue wrote:
> 
> きよすえ@福岡です。

.... 略 ....

> > magic_quotes_gpc = On の場合は、自動的に stripslashes()
> > して、magic_quotes_gpc = Off と同じ状態にするという
> > ことでしょうか。
> 基本的には、それと補足的に、半角カタカナを全角カタカナに強制変換
> 改行コードの統一、
> をしています。

そうですね。私も、半角カタカナの全角変換を入れてます。

... 略 ....

> > system 関数問題と同じだけど、入力チェックしないで、
> > SQL 文を組立てると
> >
> > $sql = "SELECT * FROM hoge WHERE price < ".addslashes($a).";";
> >
> > で、FORM TAG 入力値 $a に
> >
> > " 0 ; delete from hoge; "
> >
> > なんて入力されたら悲惨なことに。
> おっしゃる通りです。考えるのもいやになりますね。。。
> 基本的に、数値のところも '(シングルコーテーション)で囲んでしまう
> スタイルで最近は書いてしまっていたので、あまり気にした事有りませんでした。

PostgreSQL  なら、数値型でも '  '  で囲めるし、必要なら
::型名  で、cast できるから、最低限の安全性は、'  '  で
保てそうですね。 まずいケースあるかな。

でも、日付とか FORMAT が合わないと、SQL実行時にエラーと
なりますね。

7.2 からは、CHAR/VARCHAR の文字数を超えて、INSERT/UPDATE
すると、今までのように切捨ててくれずに、SQL エラーになって
更新してくれないので、またまたチェックが増える。

....  略 ...

> でも、パターンマッチング(LIKE述語)の場合のエスケープは
> DBに流し込む直前の変換のクラスの中に組み込んであげないといけないのでしょうね。
> ちなみに、postgresです。
> (ありがたいことに、今気づきました。いまから、修正します。)

LIKE 条件はちょびっと手間がかかりますね。でも一度作れば
使いまわしできるから。

私は、* と ? を、% と _  に置換して LIKE 条件にしています。

まだ試験中で公開してませんが、下記 URL で、表名に下の方の
写真集2 を選んで、メモ欄に    *'*  (アスタリスク  クォート
アスタリスク) と入れて、検索実行すると、シングルクォートを
含む行が表示されます。このメモ欄は、勝手に更新していただい
てかまいませんので、テストしていただけると嬉しい。
エラー表示の部分がまだできてないので、長い文字列を入力する
と、黙って勝手にカットされると思います。

http://www.softkoubou.co.jp/cslwebform2/


_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 (株)ソフト工房   近藤直文        Email:  nkon@shonan.ne.jp 
  《 PostgreSQL+PHPソースコードジェネレーターデモGPL版 》
           http://www.SOFTKOUBOU.co.jp/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/