Web Artisan Blog - ウェブ アルチザン ブログ

PHP:文字のエスケープ:「\」:addslashes

PHP (55 items)

2005年07月29日

PHPは、使っててさすがWEB用言語やなと思わされる事が多々あります。
例えば、HTMLの特殊文字変換なんか。
一昔前なら、各言語毎に共通関数的に自前で関数作ってた訳ですが、
こういう、WEBシステムには必須な関数がデフォルトで用意されてるわけです。
>htmlspecialchars関数
>htmlentities関数


で、他にも必須な処理がありますが、
SQL発行する際に必要な「'(シングルクォーテーション)」とかの文字。
SQLインジェクション攻撃を回避する為に、これらの文字はエスケープしたいところですが、
そういう関数も当然ながら用意されてます。

addslashes関数
データベースへの問い合わせなどに際してクォートされるべき 文字の前にバックスラッシュを挿入した文字列を返します。クォート されるべき文字とは、シングルクォート('), ダブルクォート("),バックスラッシュ (\) ,NUL (NULL バイト) です。



で、当然ながら、これを元に戻す関数もあるわけです。

stripslashes関数
バックスラッシュが取り除かれた文字列を返します。(\' が ' になるなど) 2つ並んだバックスラッシュは1つのバックスラッシュになります。




更に、こんな関数使うまでも無く、
GETやPOSTで送信された値は、php.iniの設定で自動でエスケープしてくれます。

magic_quotes_gpc
GPC(Get/Post/Cookie)処理に関するmagic_quotesの設定を行います。 magic_quotesがonの場合、'(シングルクオート)、"(ダブルク オート)、\(バックスラッシュ) 、NULLには全て自動的にバックスラッ シュでエスケープ処理が行われます。




俺ら何もせんでええやん。

・・・、という訳ではないですね。
これらの関数やらphp.iniの設定をうまく使って、
SQLインジェクションに代表される、WEBシステムには付きものの、
「外からの不正攻撃」を防ぎたいところです。

前の記事 次の記事

Comments

コメントは、まだ書かれていません

Add Comments

Trackback

てくてく糸巻き wrote:

メモ:ちと勉強:
stereolog調整中の、PHPの勉強(かなり初心者ですw)
2006年06月25日 17時15分49秒

Trackback URL

http://www.res-system.com/weblog/action.php?action=plugin&name=TrackBack&tb_id=502