[PHP-users 5018] Re: チェックボックスの使い方をまとめました

Naofumi Kondoh php-users@php.gr.jp
Sat, 26 Jan 2002 19:51:53 +0900


ソフト工房の近藤です。

TakashiNakagawa wrote:
> 
> 中川貴志@実家はまいパパさんの近く です。

おお。そうですか。 *-free ML では、まいパパさんに
お世話になってます。 

...略...

> 他のところからURL(GET)で変数かかれたものを直接処理するのは
> 危ないのでは。というのを防ぐため。。。とか。
> ないでしょうか。

既出ですが、特に isset を使う場合は、php.ini の
gpc_order にどう設定しておいても、POST されてい
ない変数を GET で送ってグローバルにできてしまい
ます。

高本さんの例でいえば、ブラウザの URL 欄に手入力で、

http://xxxx/checkbox1.html?fmsun=1&fmfri=1

などと URLARG を追加してやれば、チェックボックス
をクリックしていないのに、クリックしたかのように
処理されてしまうということです。あたりまえですが。

COOKIE に同じ様な細工をされる事も。クロスサイト
スクリプティングでクッキー見られ放題になる場合も
ありますね。

曜日の入力ならたいしたことないかもしれないけど、
お金や信用にかかわる重大な CHECKBOX だと恐いです。


> じゃあ、ほかのところからPOSTで来たらどうしよう(^^;
> セッションID(時間制)でももたすとか。。。

既出だとおもいますが、一応。

HIDDEN や、URL ARG で送らないでサーバー側のセッション
情報に保存。

セッションIDなど URLARG か HIDDEN で送らなければ
ならない重要な情報には、MD5 などでチェックサムをつ
けて、改竄されていないか検査してから使う。

セッションID自体は、毎回IDを変更。ID発行から
一定時間以上経過した場合は無効にする。IDは、連番
など他のセッションの番号が推定しやすいものにはしない。

ユーザー入力の重要な項目(金額、発注数等々)は、
JavaScriptで、MD5 など サムチェックをつけて、
使用前にチェックして改竄しにくくする。

パスワードは、生では流さないようにする。チャレンジ
レスポンス等がいいのでは。
でも、JavaScript 使用禁止になると使えないですね。
某社の穴だらけブラウザのせいで、vbscript は当然と
しても、JavaScript まで一律使用禁止にされてしまう
と、セキュリティー向上の仕組みが生かされない。
なんか、BSE 問題みたい。信用不安ですね (^_^;;

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 (株)ソフト工房   近藤直文        Email:  nkon@shonan.ne.jp 
PostgreSQL+PHP ソースコードジェネレーター セミナースライド
          http://www.shonan.ne.jp/~nkon/cslpg.a.semi/
          http://www.SOFTKOUBOU.co.jp/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/