###前提・実現したいこと
現在PHPにて会員登録システムを作成しています。
その際にセキュリティについて注意しておくことがわかりませんので質問させていただきます。
XSS対策,SQLInjection対策はしてあります。
他に対策するべき点はありますでしょうか?
よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答6件
0
ベストアンサー
いいまとめを書いてくれている方がいますよ。
また、少し難しいですが、セキュリティチェックツールを使われたほうが再テスト等も楽ですし、安全ですよ。
投稿2017/05/18 13:18
総合スコア824
0
te2ji さんが書かれているように、要件の方が大事ですね。SQLインジェクションとかXSSの対策は、全ての機能に必要な対策であって、登録システムに特有の話ではありません。
以下は、私の書いた本からの抜き出しですが、te2jiさんの書かれているログの問題とかもありますね(ログは別の章に書いたので以下にはでてきません)。
ユーザ登録
- メールアドレスの受信確認
- ユーザIDの重複防止
- ユーザの自動登録への対処(任意)
- パスワードの要件チェック(もちろんユーザIDの要件チェックも)
パスワード変更
- 現在のパスワードを確認する(再認証)
- パスワード変更時にはメールでその旨を通知する
メールアドレス変更
- 新規メールアドレスに対する受信確認(前項参照)
- 再認証(前項参照)
- メール通知(前項参照)
パスワードリセット機能
※複雑なので省略
著名なウェブのサービスを使ってみて研究をされるとよいと思います。
投稿2017/05/18 22:12
総合スコア11701
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
アカウントのシステムならば、パスワードのハッシュ保存をしておくべきだと思われます。
というのも、入力されたパスワードを平文で保存している場合もしなんらかのタイミングでパスワードが流出した場合、ユーザーがパスワードを使いまわしている他のサービスも軒並みやられてしまいます。
しかしサルトを付けて一方向関数にぶち込んで保存しておけば元の平文は推測されないのである程度安全性が高まります。
もちろんパスワードを盗まれないのが最善ですけどねw
投稿2017/05/18 13:04
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/05/18 13:05
退会済みユーザー
2017/05/18 13:07
退会済みユーザー
2017/05/18 13:09
退会済みユーザー
2017/05/18 13:51 編集
2017/05/18 13:36
2017/05/18 14:40
退会済みユーザー
2017/05/19 07:13
2017/05/19 07:16 編集
0
がると申します。
ベストアンサーがついた後の回答で恐縮ですが、よろしかったら参考程度、まで。
もしお仕事で作成をなさっているようであれば。法的な理由も含めて、IPAの
安全なウェブサイトの作り方
の中にある、
安全なウェブサイトの作り方
安全なSQLの呼び出し方
セキュリティ実装 チェックリスト
あたりをチェックされてみるのも、あるいは有益かもしれません。
以上、なにかの参考にでもなれば幸いです。
投稿2017/05/18 14:44
総合スコア506
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/05/19 07:14
0
コーディングを気にするより先に、セキュリティ要件を整理することが必要です。
たとえば、
・登録内容はどういったもので、どのような制限を設けるか
・制限を違反した場合、どのような対応を取るか
・どういったログをとり、それをどのように利用するか
等々、要件をまず決めないと、システムとしてのセキュリティを考えることが出来ません。
セキュリティ要件が決定されてはじめて
・登録内容として数字だけとし、その制限をフロントとサーバサイドの両方でかける。
・違反者は10分間アクセスできなくする
・制限に引っ掛かった場合のみ、ip アドレスとアクションをセットでログとして残す。
といった設計ができるようになり、それをコードに落とすことが出来ます。
まずはどういった要件が必要か洗い出す必要があります。
あまり役には立ちませんが、以下のサイトで雰囲気をつかむことはできるかと思います。
セキュリティ要件確認支援ツールの公開
** 追記 **
記述した要件はどちらかと言うと要件から生まれる仕様に近いので適切ではなかったかも。
記述したかったのは、まず「要件ありき」でシステムを作らないと、良い方向のモノが出来ないということです。
投稿2017/05/18 13:56
編集2017/05/18 14:07退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/05/19 07:13
0
わりかし、最近話題になった。ShellShockとかもですかね?OSコマンドインジェクションに近い物がありますけど。
投稿2017/05/18 13:26
総合スコア218
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/05/18 13:33
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/05/18 13:32