不特定多数が使うプログラムにおいては、使用するユーザーがどちらに属するかを考えなければならない。
自分のマシンにインストールし使用するプログラムでは、ユーザーを信頼し性善説的プログラムを書いても良いのだが。。。。
Webなどの不特定多数に公開し、かつ損害を与えても自分にデメリットが無い(警察のお世話になることは除いて)プログラムにおいては性悪説でプログラムを書かなければならない。
性悪説でプログラムってホワイトリスト形式になるし、そのホワイトリストが本当にまともに動いていることを検証することが大変なのだ。
いろいろWebを見ているが、まじめにやっているのかな?というところが多い。ひどいのではhiddenパラメータに、ディレクトリパスが記述されていたり、SQLが見えているものまである。
セキュリティに穴があるかは分からないが、こういうのを見るとちとパラメータを変えて何かしたくなるのだが、衝動を抑えている。(おぃ
HTMLやJavaScriptで制限加えてても無駄なんですよ。。。hiddenパラメータもパラメータを変えてクラック出来る。
性悪説的プログラムを書き、かつユーザーの利便を損なわないプログラムというと、実はかなり難しいし工程がすごく上がるのだ。
それが管理画面などにまで適用するとなると、素晴らしいほど検証や作成に時間が掛かる。
XSSチートシート
XSS対策にしても上のURLのものを全てチェックしているサイトがどれだけあるのだろう。。。
入力にタグを全て禁止するか、特定のタグを属性まで許すかなどの条件により、工程が恐ろしく変わる。
Web関係で入力が伴うのに対し、軽く請けているところは考えてないんじゃ無いかと思う。
安くなくても以前どこかの会社であまりに考えてなくて愕然としたこともあるが。。。
(証拠にクラックしてWebページ書き換えに成功しました。)
プログラムは普通の人には見えないところでも、要求仕様によっては数倍や数十倍工程が変わる。
つまり、要求仕様の検討無しに見積もりは不可能なのだ。
もちろん金額が合うようにお客様の要求仕様を完璧に満たしているように見えるプログラムを作って騙すことも簡単だ。
騙すつもりが無くても知識が無く、すぐに分かる穴があるWebプログラムを収めるというのは同罪である。だからあまりにも知識の無い同業者は軽蔑する。
自分もまだ知識があるとは言えないが、あまりにひどいのが多すぎると思わないでもない。
まぁ、ある程度、知識のある人のうらみを買うか有名にならない限り、なかなか問題に突き当たることが少ないかもしれないし、良いのかもしれないなぁ。。。