###前提・実現したいこと
低価格帯のレンタルサーバー
OSやApacheの細かい設定などは触れないが、phpMyAdminなどは使用可
で
PHP5 + MySQL5
にて若干の個人情報をデータベースに持つようなシステムを構築したいと思ってます。
(ログインして情報を登録、編集、削除、閲覧するようなもの)
そこでセキュリティ面で知識不足ですので、皆さんがどのようにセキュリティ強化されているか、最低限ここまで必須や可能ならここまでしていればOKなどの内容があればお聞きしたいです。
###試したこと
PHP側では、
ログインパスワードの(複数回ストレッチング?)ハッシュ化
PHP
1for( $i=0; $i<100; $i++ ) { 2$hash = hash ( "sha256", $hash . "パスワード" . "キーとなる文字列" ); 3}
のような形でハッシュ化を試しました。
例えば100回とした場合にこの回数とキーが漏れなければ良い対策なのかなと思ってます。
また、PDOにて、プレースホルダを用いてプリペアドステートメントを実行する、という形を試しました。
PHP
1$sql = "SELECT * FROM `member` WHERE id = :member_id"; 2$stmt = $pdo->prepare ( $sql ); 3$stmt->bindValue ( ':member_id', ( int ) $member_id, PDO::PARAM_INT );
###不明点と不安点
まずは、上記のようなPHP対策での不足点などお聞きできれば幸いです。
加えまして、MySQL側でどうすれば良いかで悩んでます。
データベースで個人情報にあたるものを全部同じようにハッシュ化すれば良い?と思ったのですが、それでは元の文字列にできない…ということで、では暗号化(可逆暗号)?と考えているところです。
SQL
1//インサート時 2INSERT INTO `member` (name) VALUES (encode(name,'暗号化キー')); 3//取得時 4SELECT decode(name,'暗号化キー') FROM `member`;
このような形にするととりあえずはキーが分からない限りはデータベース情報を全部抜かれたりしても大丈夫…?なのでしょうか…。
(phpMyAdmin上では文字化けしているみたいなデータの見た目になり使いにくいだろうと思うところですが…)
心配なところをあげればキリがないのですが、お詳しい方アドバイス頂けると幸いです。

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/15 09:28
2017/03/15 09:33
2017/03/21 04:09