初心者のためのWEBアプリのセキュリティ対策
WEBアプリのセキュリティ対策といえば、近ごろ個人情報が盗まれたとか、クレジットカード情報を引き出され、知らないうちに使い込まれていたとかで、私たちを恐怖のどん底にたたき落とすようなホットな話題です。
それでセキュリティ対策は力入れてやらなければ、と思って調べてみると、「クロスサイトスクリプティング(XSS)」やら「SQLインジェクション」やら、そりゃ新たなプロレスの必殺技かいとつっこみたくなるようなカタカナ語のオンパレードですね。細かく解説されていてありがたいのですが、本を読んでいると、セキュリティ界の深い世界を
「これでもか」
と見せつけられ、
「結局終わりのないイタチごっこなのさ」
という話で終わることが多かったです。
たくさん読まないといけないわりには、
「でっ?どうすりゃいいのよ」
という知りたいところがわかりにくく、私にはとっつきにくいものと感じました。
たいてい私たちが作るWEBアプリは価格.comのような超巨大サイトでもないし、クレジットカード情報を扱うようなサイトでもありません。
それで、いろいろ調べましたが、これをやっておけばひとまずOKラインだと思うものをあげます。
1.大事な入力フォームはSSLで通信する。
2.ユーザが入力するデータはチェックを行う。
(データの型、長さ、HTMLタグを変換)
3.ユーザの入力データを使うときはチェックを行う。
(SQL文に使うときは'シングルクォートを''シングルクォート2個に変換、\を\\に変換、HTMLタグは変換)(ikepyonさんありがとうございました。4/17追記)
えっこれだけ
これでクロスサイトスクリプティング、SQLインジェクション、バッファオーバーフロー、パラメータ改ざんなどといったよくあげられる攻撃の対策ができます。このデータをチェックするコードを書くのが面倒でセキュリティホールができていたというのがほとんどなのではないでしょうか。
私はこれだけ知りたかったのにいったい何百ページ読まなければいけなかったのでしょうか。これ以外にもクロスサイトリクエストフォージェリー(CSRFどんな必殺技やねん。リファラーをチェックして対策します)などありますが、上の3つを気をつけていれば、「クロスサイトスクリプティング、SQLインジェクション、バッファオーバーフロー、パラメータ改ざんの対策してますよ」と言えます。
やたらと難しい言葉で私たちを恐怖のどん底にたたき起こすような話は、不必要なセキュリティ商材を買わせる営業文句であることもありますので十分気をつけましょう。クラッカーより見積が通常の何倍もするシステムを売りつけてくる人の方が脅威です。
知っていれば騙されませんから。
もう一歩細かく対策するならこのサイトが参考になります。
さらに深く、攻撃の手口をしっかり知るにはこの辺で学びましょう。
鍵はたくさんかけ過ぎると普段使う人の出入りが面倒になります。
セキュリティと便利さは相反するもの。
自分のつくるWEBアプリに合わせたセキュリティ対策をしましょう。