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

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

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

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

Q&A

4回答

24967閲覧

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

1nakaji

総合スコア187

PHP

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

4グッド

6クリップ

投稿2015/12/02 10:27

編集2022/01/12 10:55

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

仮に言語はPHPとします。

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

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

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

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

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

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

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

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

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

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

よろしくお願いいたします。

kazuyakazuya, buibui80, kszk311, kakimochi👍を押しています

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

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

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

アプリケーション的には

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

と言ったところでしょうか。

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

投稿2015/12/02 10:52

tanat

総合スコア18709

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

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

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

投稿2015/12/03 00:57

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

PCI DSSとは

投稿2015/12/03 01:07

KatsumiTanaka

総合スコア924

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

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

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

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

投稿2015/12/02 15:17

chiku_

総合スコア1464

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問