2012年8月30日木曜日

Webサイトを作った時に気にしたセキュリティ対策のまとめ

・XSS(クロスサイトスクリプティング)対策
サイトに動的な情報をそのまま表示しないようにすればいいのでユーザ側から受け取った入力を表示する時はPHPのhtmlspecialchars()等でタグを無効化してから表示する。

・SQLインジェクション対策
今回はDBへのアクセスはPDOを使ったのでPDOを利用する時の注意点だけ
必ずプレースホルダーを使う、prepareを使ってSQL文を実行すればOK
動的プレースホルダと静的プレースホルダがあるので 
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES,FALSE)
で静的プレースホルダを使うように設定する
DBへの接続時に文字コードを指定する(普通はUTF8)

・パスワードのハッシュ化
DBにパスワードを登録する際にハッシュ化するアルゴリズムにもいろいろあるらしく、
MD5とRIPEMDというアルゴリズムは危険性があるらしいので使っちゃいけない。
CRYPTRECという暗号化プロジェクトがSHA256以上を推奨してるらしいのでこれに従えばよさげ。
あとは「PASS」みたいないろんな人が設定しそうなパスワードを単純にハッシュ化すると同じ値にハッシュ化されてハッシュ化した値で同じ値がたくさんあったらこれはPASSをハッシュ化した値だなって感じに分かるのでソルトと言われる文字列をパスワードに付加してからハッシュ化してDBに保存する





0 件のコメント:

コメントを投稿