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

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

新規登録して質問してみよう
ただいま回答率
85.35%
セキュリティー

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

PHP

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

Q&A

解決済

3回答

663閲覧

PHPのセキュリティ対策

super-sub

総合スコア30

セキュリティー

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

PHP

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

0グッド

2クリップ

投稿2020/04/11 04:21

前提

今PHPで予約注文システムを作っています。
このシステムの具体的な流れとしては、
① 注文したい商品の個数を入力
② 商品名、値段、個数 を確認出来たら 氏名、住所、メールアドレス、電話番号を入力
③ ②の最終確認をし、大丈夫であれば注文確定
④ 注文した内容があらかじめ指定したメールに送信される
となっています。

後々にはレンタルサーバーでも借りてアップロードできればいいなと思っています。

現状

PHPの作品をサーバーにアップロードする試みは初めてで、セキュリティ対策を気にしながら作ったことも初めてなので、セキュリティ対策は具体的に何をすればよいかわからない状態です。
今の段階ではブラウザに表示する際、htmlspecialchars()で記述しております。
ちなみに今回はデータベースは使用しておらず、$_POST,$_SESSIONのみで完結しています。

質問

上記のシステムの流れを踏まえて、必要なセキュリティ対策は具体的に何でしょうか。
もし、現状存在しているセキュリティ対策を全てやれという意見をお持ちの方も是非教えて頂きたいと思います。
よろしくお願い致します。

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

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

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

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

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

guest

回答3

0

ベストアンサー

この仕様だと「メールフォーム」と呼ばれるタイプのスクリプトになりますね。メールフォームのセキュリティについてはteratailでも過去記事が多くありますので、検索して参考にすればよいのではないでしょうか。

実装上の脆弱性についてはXSS(htmlspecialcharsで対策)に加えて、メールヘッダ・インジェクションという脆弱性がありえます。安全なウェブサイトの作り方などで対策方法を調べてみてください。

また、仕様上これでよいのかという疑問があります。このあたりは、私の過去の講演が参考になると思います…ちょっと難しいかもしれませんが。

オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
架空企業「オニギリペイ」に学ぶ、セキュリティインシデント対策 (1/3):徳丸浩氏が8つの試練を基に解説 - @IT

この講演の中で、サービスないし業務レベルでの脅威分析をしましょうと言っています。
すぐに思いつく脅威は、「なりすまし注文」です。別人を装って勝手な注文をするというものですね。また、CSRFという攻撃を用いて、「なりすまし注文」を第三者にさせるという攻撃もできます。

上記脅威は簡単には解消できない(すくともデータベースを使わないという想定では)と思いますので、率直なところ、実用に耐えないように思います。

投稿2020/04/11 08:05

ockeghem

総合スコア11705

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

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

super-sub

2020/04/11 09:32

ockeghem さん 貴重かつ率直なご意見ありがとうございます! 確かに「なりすまし注文」は自分でも容易に想像できてしまいました...。(汗) もう一度考え直したいと思います。
guest

0

セキュリティ対策を気にしながら作ったことも初めてなので、セキュリティ対策は具体的に何をすればよいかわからない状態です。

今の状態では過剰ですが、以下の資料が網羅的でとても良くまとまっています。

「政府機関等の情報セキュリティ対策のための統一基準群(平成30年度版)」

また、本来はセキュリティ要件ありきで、設計してからコーディングを行うのですが、コーディングだけ切り出すのであれば、考えるべきは以下の項目に関してです。

CERT Top 10 Secure Coding Practices

htmlspecialchars の使用とかは「第7位 他のシステムに送信するデータを無害化する」に該当します。
実装方法に関しては、すでに紹介されている「体系的に学ぶ 安全なwebアプリケーションの作り方 第2版」が重宝します。

投稿2020/04/11 05:30

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

「どこまで対策するか」は要件次第なので何とも言えません。
「htmlspecialchars()で記述しております」だけ書かれても適切に対策されたかどうかは実際のコードを提示されないと誰にも判断がつきません。
そもそも「htmlspecialchars()によって何が防げるか、何の対策になるか」は知った上で導入されていますか?
それらを整理することからはじめてください。

「一般的にどのような脅威があり、それぞれどのように対策していくものか」が知りたいのでしたらIPAの安全なウェブサイトの作り方を確認してください。
また通称「徳丸本」というWebセキュリティでは有名な書籍もあります。

投稿2020/04/11 04:28

m.ts10806

総合スコア80875

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問