質問: 今セキュリティーについて勉強しています。 ハッキングの基本的な方法と対策は分かってきました、しかし実際プロの方がどのような方法でどこまでチェックしているのか知りたくて質問させていただきました。 SQLインジェクション OSコマンドインジェクション nullバイト攻撃 ディレクトリトラバーサル セッションハイジャック、セッションの固定化 XSS CSRF HTTPヘッダインジェクション メール第三者中継 バファオーバーフロー 例えばこの↑のチェックをしておけば十分なのかどうなのか。 また極端な話facebookやtwitterと自分で作った小さなサイトでのセキュリティーは違うと思うのでここでは、「顧客数1万人規模のECサイトなら、これとこれとこれのチェックしとけば良い(その方法も)」という記述が欲しいです。 (もし余裕があればfacebookやtwitterなどの世界的規模のサイトはここまでチェックしてないとやばいことになるよ、という記述もお願いしたいです) よろしくお願いします。
回答: 開発者という立場であれば、「脆弱性がないかチェックする」という立場よりも、まずは「脆弱性が混入しない作り方を学び実践する」でよろしいかと思います。 どこまでやればいいかというと、脆弱性が混入する局面は決まっているので、その局面に遭遇すれば対処する、ということになります。 | 脆弱性名 | 対処する局面 | | --- | --- | | SQLインジェクション | SQL呼び出しをする箇所 | | OSコマンドインジェクション | OSコマンドを呼び出す箇所 | | nullバイト攻撃 | 通常他の脆弱性と組み合わせで用いられるので単独では気にしない | | ディレクトリトラバーサル | ファイル名を外部から渡している箇所 | | セッションハイジャック | これは攻撃名の総称なので単独では気にしない | | セッションの固定化 | ログイン処理の箇所 | | XSS | 表示箇所 | | CSRF | 更新処理などをしている箇所 | | HTTPヘッダインジェクション | 最近のPHPでは気にしなくてもよい | | メール第三者中継 | メールサーバーを設置した場合は対応必須(設定で対処) | | バファオーバーフロー | PHPでは気にしなくてもよい | 例示されていた問題(脆弱性)は、サイトの規模によらず対応は必須です。脆弱性対処を超えて、二段階認証に対応するか、WAF(Web Application Firewall)を導入するか、データベース内の情報を暗号化するか、などはサイトの性質や予算に応じて決めることになります。