質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • PHP

    20878questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • MySQL

    6030questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • SSL

    518questions

    SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

  • セキュリティー

    472questions

    このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

  • HTTPS

    267questions

    HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

ショッピングカートのセキュリティについて

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 5
  • VIEW 2,473

seijiro7777

score 13

PHPでショッピングカートを作ろうと思っています。

ショッピングカートを作成する際にセキュリティ面で必須でやっておかなくてはいけない事を教えて欲しいです。

もちろんSSLを使用し、HTTPSで購入者情報を通信しますが、それだけでは不十分でしょうか。
また、データベース(MySql)に顧客情報をそのまま保存するのは危険なのでしょうか。

カード決済や、コンビニ決済に関しては、決済代行業者に依頼する予定ですので、クレジットカードに対する情報は保存しません。

購入者の名前や住所、電話番号など履歴をDBに残すため個人情報の漏洩を懸念しています。

宜しくお願いします。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+1

懸念される点は非常に多岐に渡り、本が一冊書けるレベルです。
もし目的が開発ではなくECサイトのオープンなのであれば、商用に提供されているASPなどを利用される方が良いかもしれません。

具体的な懸念点としては例えば以下になります。

◯サーバ(共通)
 ・サーバ上で必要ないソフトウェアが動いていないか
 ・サーバ上で必要ないポートが空いていないか
 ・Apache,MySQLなどサーバ用のソフトウェア、またPHPなどは最新か
 ・SSH、SFTPでのログインは強固なものになっているか
   ※IPアドレス等の制限、パスワードではなくRSA認証などを用いているか、
    rootでのログイン禁止、必要のないユーザーでログインできるようになっていないか

◯DBサーバ
 ・WebサーバとDBサーバを分けている場合、
  DBサーバはグローバルからアクセスできないようになっていることが望ましい
 ・MySQLにログインするユーザーは適切な権限(GRANT)が与えられているか
   ※ログイン元の制御なども含めて

◯Webサーバ
 ・Apacheで余計なhttpヘッダを出力していないか
   ※Webサーバや言語のバージョンは隠す
 ・適切なユーザーでApache等のWebサーバが動いているか

◯Webアプリ
 ・コマンドインジェクション、SQLインジェクション、XSS、CSRF等が行われないか確認しているか
 ・セッションハイジャックへの対策は十分か
 ・リダイレクト時、第三者のドメインへ自由に飛べるようになっていないか
   ※例えば location.php?url=http://www.google.com/ など。フィッシングの踏み台になる
 ・サーバ上の特定のファイルを、URLやパラメータから開けるようになっていないか
   ※例えば hoge.php?file=/path/to/bar.txt などとなっている
 ・ドキュメントルートに不要なファイルが置かれていないか
   ※よくニュースになっている個人情報の漏洩で多いパターン
 ・ログイン時など、ブルートフォースアタック(辞書攻撃)対策は行われているか
 ・ユーザーのパスワードがハッシュ化された状態で保存されているか
 ・本番環境では詳細なエラー内容が出力されないようになっているか
   ※開発者向けの情報が出てしまうと相手にヒントを与えることになる

◯メールサーバ
 ・SMTPサーバが誰にでも利用されるようになっていないか
   ※踏み台になる恐れがあり

寝ぼけた頭で思い出したまま羅列しているので他にももろもろあると思います。

この手の話ではお約束ではありますが、IPAがここらへんの話をまとめたドキュメントとチェックリストを公開してますので一読されると良いかと思います。
https://www.ipa.go.jp/security/vuln/websecurity.html

MySQL等のDBに個人情報を記録しているところはたくさんありますので、対応をしっかり行えば問題が起こる確率を減らすことは可能です。しかしゼロにすることは中々出来ません。例えばデータセンターのHDDを交換した際、廃棄予定のディスクがデータ毎盗難に合うといったことも実際に発生しニュースになりました。どこまでケアするか、運営者の意向次第ではありますが、何だかんだで毎度予期せぬ事態が起こり大変な目に会うものですw
がんばってください。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/02/09 11:58

    ポイントをわかりやすく列挙していただきありがとうございます。
    大変参考になります。

    OSのインストールから構築しましたので、だいたいの項目はクリアしているように思いますが、いくつか気になる点もありますね。
    時間をかけて1つ1つ再チェックしたいと思います。

    100%は無理でも出来る事はやっておかないとダメですよね。
    モヤモヤしていた頭がスッキリしました。

    ありがとうございました。

    キャンセル

0

初めまして。

技術的な注意点では無いのですが、ECサイト構築にあたってはセキュリティコード(CVCまたはCVV)をDBに保存してはいけないというルールがあります。

WEB+DB PRESSのvol.76でWeb決済の詳しい特集があるので、そちらを一読されてみてはどうでしょうか。
もし、決済で不安であれば購入者が限定されてしまいますが、PayPalのビジネスアカウントを取得してPayPalでの支払いにすれば、セキュリティ

あと、PHPだとEC-CUBEというECサイト構築に特化したフレームワークがあります。
色々と制限があるので

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/02/08 14:40

    早速回答ありがとうございます。

    質問が説明不足で申し訳ありません。
    実際のカード決済や、コンビニ決済に関しては、PayPalと、決済代行業者に依頼する予定ですので、クレジットカードに対する情報はこちらでは保存しません。
    さすがにそれは怖すぎるので。

    私が心配しているのは、購入者の名前や住所、電話番号など履歴をDBに残すため個人情報の漏洩を懸念しています。

    サイトの都合上EC-CUBEなどは利用しない予定です。

    キャンセル

0

質問に対する回答になっていなかったようで申し訳ございません。

情報漏洩としては1つはハックされる、もう1つは作業ミスで情報が漏れると言う事が考えられると思います。

ハックに関しては下記の対策が必要かと思います。
1. MySQLのセキュリティホール修正情報を日々チェックしてバージョンを上げる
2. 外部からMySQLに接続出来ないようにする
3. MySQLに接続できるマシンおよびユーザーを限定する(MySQLのユーザー権限など)
4. SQLインジェクション対策をする

作業ミスに関しては作業手順書を作成して対応するしかないと思います。

あとは、有効とは言えないかも知れませんが独自で暗号ツールをさk

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/02/09 11:47

    参考になります。
    やはりMySQLに侵入されない事が一番のポイントとなるわけですね。
    そのあたりを再チェックしてみます。

    ありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    ECサイト構築にあたって。

    現在「楽天市場」「Amazon」「Yahoo!ショッピング」などの主要ECモールへ出店しておりますが、今後を考え自社ドメインのECサイトを構築したいと考えています。 そこで、既存

  • 解決済

    ECサイトのテーブル設計について

    Railsを学習するためにECサイトを制作していますカート機能を持ったECサイトを想定しているのですが、カート内の仕様を想定したときにどういったテーブル設計にすべきかわからないポイ

  • 受付中

    EC-CUBE カートに入れるボタンが動かない

    EC-CUBE 商品一覧ページにてカートに入れるボタンが動作しません。 どこに問題があるのか、調べましたが該当するものが見つからず、さっぱり分かりませんでした。 どなたかご教授を

  • 受付中

    PHP 非会員の買い物カート

    PHPを使って買い物カートを作ろうと思っているのですがどうすればいいのかわからずとまっている状況です。 会員(データベースに存在する人)になっているかたはできたのですが、

  • 解決済

    iFrameの中と外でデータをやりとりするやり方

    iFrameの中と外でデータをやりとりするやり方を教えてください。 ただ、いくつか制限があります。 1.親側サイトではjavascriptが使用できません。 2.親子のサ

  • 解決済

    カートに入れた情報の保存先について

    おせわになります。 PHPでEC用のカートを作ろうとしているのですが、通常カートに商品を入れた時の商品情報の一時保存先は、 どこが適切なのでしょうか? カートシステム

  • 受付中

    [教えてください]ドロワーメニューの書き方[javascript,html,css]

    前提・実現したいこと 前提 PCで見る時にはウィンドウ上部に横並びになっているmenuリストをレスポンシブ対応させ、その時にドロワーメニューになるようにしたいのですが、どのよう

  • 受付中

    WordPressで会員登録のプラグインについて

    現在ショップサーブで自社のHPを掲載しているのですがこのたびWordPressに変えることにしました 使っていたHPには買い物かごと会員登録機能がありました WordPress

同じタグがついた質問を見る

  • PHP

    20878questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • MySQL

    6030questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • SSL

    518questions

    SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

  • セキュリティー

    472questions

    このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

  • HTTPS

    267questions

    HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。