ikepyonのお気楽な日々〜技術ネタ風味〜 このページをアンテナに追加 RSSフィード

気になった日々のニュースとメモのためのリンクと戯言のページ

To Do(というかやりたいこと。何時終わることやら)
-ITIL導入のための成熟度チェックシートみたいなの(あると便利だよね?)
-Hacknotes Web Security Portable Reference和訳(出版社募集中)
-Webアプリケーションセキュリティ検査ツールの改良(一応完成)
-Hacker HighSchoolの資料の日本語訳
-OSSTMMの日本語訳
-「燃えるセキュアプログラミング」若しくは「サルでも分かるセキュアプログラミング」とか書いてみたいなぁみたいな。

これだけはチェックしときなはれ!!受入れテスト用セキュリティチェックリスト公開中
Webアプリケーションセキュリティはてなぐるーぷ(テスト中やで)
SQL Injectionの仕組みと対策公開中
RSS feed meter for http://d.hatena.ne.jp/ikepyon/
Secure Coding に入ろう!! [MLの詳細]
メールアドレス
SKUF Meeting なかのひと

2009-12-16 やる気無いなぁ

[]Code (In)Security Code (In)Securityを含むブックマーク Code (In)Securityのブックマークコメント

http://bit.ly/714vsw

どうもコードとか設計セキュリティに関する文書らしい。後で読む

トラックバック - http://d.hatena.ne.jp/ikepyon/20091216

2009-12-10 咳直った?

[]セキュアプログラミング教育 セキュアプログラミング教育を含むブックマーク セキュアプログラミング教育のブックマークコメント

Webアプリを作るうえで、SQLプログラム言語HTMLの知識は必須だと思うんだ。HTTPは無いよりあったほうがいいが必須か?と言われるとちょっとそうでも無い気がしている。で、SQLプログラム言語HTMLを一から勉強する場合、SQLならSQLだけ、プログラム言語ならプログラム言語だけ、HTMLならHTMLだけと別々に勉強しているのではないか?

例えばuserテーブルから「ikepyon」というuseridを検索するというSQLを書けと言われると、以下のものになると思う。

SELECT * FROM user WHERE userid = 'ikepyon';

で、ここからプログラムを書くときに、ユーザーから指定された任意のユーザー検索する場合どういうSQLを書けばいいか?と考えると

SELECT * FROM user WHERE userid = '指定されたユーザー';

ということになっちゃう。結果、それを元にプログラムを書けっていわれると、

sql = "SELECT * FROM user WHERE userid = '" + uid + "';"

ここでuidはユーザーから入力されたデータとする

というSQLを動的に組み立ててしまうのではないだろうか?これってSQLプログラム言語を別々に学習した結果、ユーザー入力するデータってどんなのかわから無いという視点が抜けてしまうからとか無いだろうか?

HTMLもおんなじで、ユーザーからの入力をそのままレスポンスに埋め込んでしまう。

例えば先の例であれば、「O'Reilly」を検索するSQLを書けと言われれば、以下のようになり、誰でもおかしいと直ぐに気づくだろう(多分、きっと、だったらうれしいなぁorz)。

SELECT * FROM user WHERE userid ='O'Reilly';

でも、プログラムに埋め込むとこれが見えなくなっちゃう。

こういうのって、SQLHTMLプログラム言語を全く別のものとして学習してしまった結果かなぁ?とか思うんだけどどうだろう?

アプリを作る際に、SQLHTMLプログラム言語もひっくるめて考えなきゃいけないのに、別々の知識としてあるだけで、それぞれ関係しているんだという意識が無いのかもしれない。だから、平気で「sql = "SELECT * FROM user WHERE userid = '" + uid + "';"」のようなコードを書いちゃうんじゃないのかなぁ?

それに、「O'Reilly」みたいなのを検索できるようなプログラムをサンプルにすりゃいいのに、入門用の解説では「分かりづらくなるので、問題のあるコードにします。セキュリティについては後で書きます」とか出てくるのも、別物として学習させようというのがあるんじゃなかろうか?

「分かりづらくなる」って何だよ!正しく動かないことがあるプログラムを入門用のサンプルとするほうが問題だろうと思うんだけどなぁ?

[]安全なアプリへのアプローチ 安全なアプリへのアプローチを含むブックマーク 安全なアプリへのアプローチのブックマークコメント

と言うことをたまに考える。

アプローチとしては2つあって、一つは、フレームワークや、言語側で安全で無い実装は出来ないようにしちゃうというもの。もうひとつは、プログラマ教育すること(これにはコーディング規約を作ってそれを守らせると言うのも含む)があるんじゃないかな?と思う。

安全で無い実装が出来ないようにするというのは、それだけ自由度が制限されるのでプログラマとしてはやり辛い環境なんじゃないかなぁ?でも、それこそ初心者プログラマには、安全なアプリが作れるので、重宝するだろう。その分、そこから先になかなか進めなくなっちゃうのでは?とも思う。

一方、教育についてはコスト馬鹿にならない。しかも、ミスすることがあるし・・・

とはいえ、今の教育では、プログラミング技術セキュリティ技術とが乖離しすぎているのではないかなぁと思うんだよなぁ。そのために、セキュリティ対策=コスト増というおかしな常識がまかり通っている気がする。もちろん、アプリを作るに当たってコストのかかるセキュリティ対策と言うのはある。でも、今大きな問題になっているXSSSQLインジェクションと言った脆弱性は、プログラミングレベルだけでも、対策できることなので、これらに関して言えばセキュリティ対策を行うことが、それほど大きくコストに響いてくるとは思えないんだけどなぁ。

もっとプログラム教育方法を考え直すべきときなんじゃないかと思う今日この頃

あと、安全なアプリを作るための簡単なフレームワーク言語ってのを誰か作らないかなぁ?w

laylanlaylan 2009/12/14 11:27 Webアプリを作る上で、httpの詳細まで知っておく必要はないと思うけど、概要ぐらいは知っておく必要があると思う。(特にフレームワークを使わない場合)
更新日付やキャッシュコントロールのヘッダ情報を吐き出してない動的Webページを作成し、更新して、「ページ内容が更新されてない。サーバを再起動する!」と騒ぐ馬鹿もいるので。

ikepyonikepyon 2009/12/14 15:51 確かに概要ぐらいは知っておいた方がいいですね。でも、現状、HTTPを知らなくても何とかなっちゃう&かなり多いと思われるので・・・必須と言われると厳しい

トラックバック - http://d.hatena.ne.jp/ikepyon/20091210

1900 | 01 | 06 |
2003 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 02 | 03 | 04 |
2011 | 01 | 02 |
Connection: close