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

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

ただいまの
回答率

88.06%

決済システムを組むのに必要な知識とスキル

受付中

回答 4

投稿 編集

  • 評価
  • クリップ 6
  • VIEW 16K+

score 183

システム開発やプログラミングにおける決済システムの開発についてです。

仮に言語はPHPとします。

システム開発などで決済などが絡むようなものはハードルが高く、
初心者などでは難しくベテラン以外は組んではいけないという話をよく見ます。

これに異議があるわけではなく、セキュリティのことが何もわからない人には、
そういうシステム開発はリスクが大きすぎると思います。

しかし、ではいったい何ができるようになれば決済システムなどを組めると言えるのでしょうか。
決済システムだからこそ、注意して組む点があるのでしょうか。

ここでいう決済システムというのは「Paypal」「Web Pay」などの決済サービスを利用して、
利用者がクレジットカード決済をすると、
それに応じて利用者にサービスを提供するというようなものです。

基本的にサイトをSSL化して、SQLインジェクション、XSS、CSRF、セッションハイジャック、入力バリデーションなどの
セキュリティ対策ができていれば大丈夫なのでは?と安易に思っています。

実際の開発現場ではどうなのでしょうか。

おそらくは自分が不安なことがあるなら組まないほうがよいというのが答えの気もしますが、
エンジニアとして会社勤務経験がなく独学でプログラムを学んでいる人は、
ここまでできれば大丈夫という判断をすることが難しい気がします。

決済を扱うシステムを組む場合に、
ここには気をつけているというのがあれば教えていただけますでしょうか。

特に決済システムを組む予定があるわけではなく、疑問に思い質問しています。

また決済システムが簡単に組めると考えているわけでもないですが、
決済サービスを利用する以上顧客情報として重要なものを保持するわけでもないので、
決済システムのどこがそこまでハードルを上げているのか気になりました。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 4

+4

扱う内容次第ではありますが、一般的なショッピングサイトなどであれば
セキュリティ的には
IPAの安全なwebサイトの作り方
を理解して実践出来る程度の理解があれば問題無いかと思います。

より高度なセキュリティが求めらえるのであれば、PCI-DSS等の基準を満たせることが条件になってくるかと思います。

アプリケーション的には
  • 原理的に(DBの制約などを使って)2重課金が発生し無いようにする
  • 決済後の業務用件に沿える形で設計する
  • 課金関係の操作を後から追えるように全てトラッキングする(かつ、セキュリティ的に問題無い状態にする)
  • 最悪のケースを想定して、それにどう対応するかも設計レベルで決めておく
と言ったところでしょうか。

が、結局はその問題発生時のリスクについて責任が取れるかの方が重要なので
契約の範囲と専門家としての注意義務の範囲とリスクとの兼ね合いで責任が取れると判断できるかどうかかなと思います。
判断出来ないならどれだけスキルがあっても実装するべきではないと思います。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

+1

コーディングについてはtanatさんのご回答と同意見です。

「コーディング上の対策」は、実は決済システムにおけるセキュリティ対策の一部でしかないのです。開発するシステムについてのリスク分析を行って、対策の方針を決めた上で、コーディング上の対策を講じていくことになります。こういった分野の知見も求められます。とはいえ、そういう人は多くはありませんから、若手エンジニアはそのような人の下について経験を積んでいくことになります。

・ハードウェアのセキュリティ対策(冗長構成、データセンターの利用)
・OS上のセキュリティ対策(権限設定、暗号化、ログ取得の設定など)
・セキュリティマネジメントシステムの構築(ISMSなど)
・WAF(Web Application Firewall)やIPS(侵入防御システム), IDS(侵入検知システム)の導入
・担当者の教育や機密保持契約といった人的対策




投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

0

決済システムは決済代行会社毎に決済に関する仕様があり、その仕様を理解し、組み込むシステムに合う形に設計するのが、経験が少ない人には厳しいかなと思います。

tanatさんも言われているように、決済はアプリケーション的にも考慮すべき点が多々あり、決済のAPIの仕様を把握できていればいいというものではありません。

セキュリティ、業務要件、アプリケーション上の制約、決済の仕様などを踏まえて包括的に設計する必要があります。

システム開発の経験が少なくてもそういった事ができる人はいるでしょうが、リスクを減らすためには経験が多い方がいい、という事になるかと思います。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

0

実際にECサイトを構築し、決済代行業者とのインタフェースを構築したことがあります。
カード情報を扱うために、PCIDSSの取得を決済代行業者から求められました。(これは、決済代行業者によっても異なると思います)
その過程で、セキュリティ専門の調査会社から、サイトの診断を受けて、指摘された脆弱性については、プログラム改修や、インフラの改修等を行う必要があります。
一つ一つはさほど難しいことはないのですが、指摘されたことをきちんと理解して、さらにその対策を講じるだけのスキルは必要ですね。

PCI DSSとは

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

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

関連した質問

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