ikepyonのだめ人間日記

セキュリティに関することを書いていく予定。

有害文字wの必要な理由

まあ簡単に言っちまうと、有害文字(とあえて書くw)がないと、データの区切りとか、命令とデータの区切り等が表現できないからだ。その為、0x00から0xFFのうち幾つかのものをデータや命令の区切り等、特別なものとして使う(例えば、多くの処理系で0x00が文字データの終わりとしたり、SQL文の中で「'」を文字データの区切りとして使う)をわけだ。当然のことながら、そうして定義したものをデータとして使いたい場合、そのまま使おうとすると、アプリケーションは、特別なものとして認識してしまう。その結果エラーになったり、意図しない動き(XSSとかSQLインジェクションとか)をしてしまう。そういったことにならないように、特別な意味を持つものをデータ本来の値として使うためにエスケープ用のデータというものが多くの場合存在している。それをきちんと使えば、特別な意味を持つものを本来の値として利用することができる。有害文字wを削除するのは本来のデータを改変することなので、完全性を失わせることになる。従って、有害文字だからといって勝手に削除するのは良くない。

まあ、特別な意味を持つデータが有害文字wと言うわけではない。どちらかと言うと、有用文字だと思うんですが・・・
有害なのは特別な意味を持つデータが入ってくることを想定していない開発者の頭だったりw・・・orz

とまあおもむろに書いてみたけど、うーん、今一かな?