Home > 2038年問題にぶちのめされる前にXSSにぶちのめされるところだった

2038年問題にぶちのめされる前にXSSにぶちのめされるところだった

  • 2008-01-07 (月) 12:50
  • Tags: ,

http://www.masayashi.com/2008/01/05/536
王様は2038年にぶちのめされる前にXSSの対処をされることをお勧めいたします.

via: 王様に提言 - よくきたはてダ

うおー!ありがとうございます!
ご指摘を受け、以下のようにコードを一部改変しました。『受け取ったデータはhtmlspecialcharsかけようね』という指摘だと解釈しました。

$month 	= $_POST{'month'};	//月を受け取る
$day 	= $_POST{'day'};	//日を受け取る
  ↓ XSS対策
$month 	= htmlspecialchars($_POST{'month'});	//月を受け取る
$day 	= htmlspecialchars($_POST{'day'});	//日を受け取る

重ねて、今回のご提言に深く感謝します。
今後も至らない点が見受けられましたら、ご指摘いただければ幸いです。
2008/01/07 12:43 masayashi

Comments:7

よっくん 08-01-07 (月) 13:52

この場合、htmlspecialchars()よりも、それぞれ半角数字でかつ1~12、1~31のみ認める処理にしたほうが良いと思います。

masayashi 08-01-07 (月) 23:35

>よっくんさん
ありがとうございます!ためになります。
「期待される入力がある範囲に限定されるときは、その範囲意外の入力を認めない」ような処理を淹れておくのが望ましいということですね。
そのように書き直した上であらためて投稿したいと思います。

ひとつ疑問な点があります。
このプログラムにおいて、半角数字でかつ1~12、1~31以外の入力も認めてしまうことによる脆弱性(あるいは、単にデメリット)はどのようなものが考えられるのでしょうか?

masayashi 08-01-07 (月) 23:39

>yoggyさん
SBMコメントですが、ここでお返事したいと思います。

どちらかというと出力時にhtmlspecialchars()するのが正解のような気がする…w

ありがとう!
まだどういうのかスタンダードな記述なのかわからないので、こういう意見は助かります。

よっくん 08-01-08 (火) 13:44

>このプログラムにおいて、半角数字でかつ1~12、1~31以外の入力も認めてしまうことによる脆弱性(あるいは、単にデメリット)はどのようなものが考えられるのでしょうか?

このプログラムにおいては、警告が出るくらいだと思いますが、常にホワイトリスト法を意識してやったほうが安全だと思います☆
最初のように、半角数字を期待しているため、XSS対策をし忘れるとか、データベースが絡んできたときにSQLインジェクション対策をし忘れるとか、やっぱり人間だからあると思うので。。。
あと、期待してないデータ(このプログラムでは1~12、1~31じゃないデータ)が来るって時点で正常なアクセスではないので、そういうアクセスは全て排除した方が良いかと☆

masayashi 08-01-08 (火) 14:14

ホワイトリスト法って単語、初めて聞きました。ブラックリストの反対ですね。

なるほど、とりあえずは警告が出るくらいなんですね。
このチェック処理をたとえばものすごく多い回数行わなければならないとして、チェック処理をわざと無視することによる安全面での問題がないのであれば、その処理を省くことでの速度向上が期待できるのかなー。
みたいなことを考えたのです。Webの考え方にはマッチしないかもしれませんが、単に興味として^^;

ご回答ありがとうございます。

よっくん 08-01-08 (火) 18:21

確かに、僕は、「もしかしたら、自分には到底思いつかないような攻撃をされるかも知れない・・・」と、必要以上の処理をしてしまってるかも知れません(笑)

ただ、受け取る時に一回処理をするだけなので、ものすごく多い回数行わなければならない状態ってあんまり無いのでは・・・・?

とりあえず、ホワイトリスト法について簡単にブログにアップしたので良かったら見てください☆

masayashi 08-01-09 (水) 0:55

ホワイトリスト法の説明、ありがとうございます!
非常にわかりやすかったです。

「必要以上の処理なのでは」ということについては、確かに冗長なのかもしれませんが、Webではこのぐらい慎重すぎるくらいがちょうどいいのかー、とも思います。
今までC言語等の低級な言語で泥臭く個人的な(学生研究レベルの)処理を書くことがほとんどだったので、考え方が偏っているようですw

今後も合間を見てPHPの独習はつづけようと思いますので、また何か気になる点を見つけましたら、ご指摘いただければ幸いです。

Comment Form
Remember personal info

Trackback+Pingback:2

TrackBack URL for this entry
http://www.masayashi.com/2008/01/07/538/trackback
Listed below are links to weblogs that reference
2038年問題にぶちのめされる前にXSSにぶちのめされるところだった from 王様の箱庭
Trackback from エセプログラマーの戯言 08-01-08 (火) 18:20

PHP ホワイトリスト法について…

今回は、ホワイトリスト法ってのを考えてみたいと思います。

ホワイトリストってのは、ブラックリストの逆で、許可するもののリストです。

たとえば、プルダウンで果 (more…)

Trackback from GRANADA Hatena 08-01-09 (水) 1:29

[PHP]サニタイズかバリデートか…

id:elfさん経由なんですが。そしてもうだいぶまとまってきているのに無粋な・・・というカンジもしますが。 サニタイズかバリデートか $month = $_POST{ (more…)

Home > blog > 2038年問題にぶちのめされる前にXSSにぶちのめされるところだった

アカウント所有サービス
検索
クリック募金

クリックするだけでスポンサー企業を通して無料で募金が行えます。
あわせて読みたい

あわせて読みたい
ここ一週間の起床時刻

早起き生活
こまごまとしたもの

track feed