[PHP-users 10906] 穴を作らないためのスクリプティング

Osamu Shigematsu php-users@php.gr.jp
Thu, 17 Oct 2002 04:05:32 +0900


重松です。こんにちは。
もとの話からずれてきたのでタイトル、かえました。

>> とくに、PHP の場合、「適当に書く」時に使うものなので、
>> 安全にコーティングができるそういう仕組みがあること自体がありがたいです。
>
> PHPはとにかく早く動作するアプリを作りたいと言う時に便利
> ですが、いい加減すぎるスクリプトが多いと困りますね。
>
> PosgreSQLユーザーの方はpg_convert()を活用する事で、SQL
> インジェクションを確実かつ簡単に防げる様になります。
>
> # SQLインジェクションと言う言葉を聞いた事がない方は、必ず
> # 勉強される事を強くお勧めします。直接攻撃ができるので、
> # クロスサイトスクリプティングより危険です。

まあ、クロスサイトスクリプティング脆弱性に関しても、
そうですけど、性善説は危険ですね。

それはそうと、pg_convert() については、知りませんでした。(現状も CVS のみ?)
http://www.php.net/manual/ja/function.pg-convert.php

で、恥ずかしながら、マニュアルを見ても、引数の意味などが書いてないので、
さっぱり使い方自体が解らないのですが、PEAR で使う場合には、
どのようになるのでしょうか。

>> # 例外 try{}catch{}finally{} とか、5 になれば、使えるのでしょうか。。。
>>
>
> 使えます。

楽しみです。:-)

そうすれば、
	do{
		/*処理*/
		if($err) break;
		/*処理*/
	}while(false)
とサヨナラできます。
入れ子にできないとか、低次元なことに悩まなくて済むなあ。

> try catchが使えなくても、エラー関数とバッファを使う
> とシンプルかつ安全なWebアプリケーションが作成できます。
> E_ALLにして、全てのエラーでアプリケーションが止まる様に
> 作った方が良いと言う事です。

エラー関数について、まだ全然使いこなせていないのですが、
参考になるコードなどありましたら、ご紹介頂けませんでしょうか。
5 までまだ少し時間があるかと思いますので。

> 色々考えてプログラム作らないと簡単に大穴付きのWebサイトに
> なってしまいます。たとえば、以下のスクリプトは非常に危険です。
>
> 当たり前すぎて、役に立たないかもしれませんが、セキュリティー
> 上の問題点、すぐに解りますよね?

んでもって、それはそうなんですが、こういう穴を共用の計算機の場合、
すっとぼけた他人があけないとも限らないわけで、
だとすると、PostgreSQL に接続する際のパスワードとか、
どこに書けばいいのよ、という疑問がふつふつと湧いてくるのですが、
どのような方策が考えられますでしょうか。

-- 
Osamu Shigematsu