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

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

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

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

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

SSL

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

PHP

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

proxy

proxy(プロキシー)は、企業などの内部コンピュータとインターネットの中間に位置し、例えば直接インターネットに接続できない内部コンピュータの代理としてインターネットに接続する等をするシステム、もしくは代理として機能を実行するソフトウェアです。内部ネットワークへのアクセスを一元管理し、内部からの特定の種類の接続以外を遮断すること、外部からの不正アクセスを拒否することなどに用いられます。

Q&A

解決済

4回答

4475閲覧

PHPでプロキシ

inukujira

総合スコア130

HTTPS

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

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

SSL

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

PHP

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

proxy

proxy(プロキシー)は、企業などの内部コンピュータとインターネットの中間に位置し、例えば直接インターネットに接続できない内部コンピュータの代理としてインターネットに接続する等をするシステム、もしくは代理として機能を実行するソフトウェアです。内部ネットワークへのアクセスを一元管理し、内部からの特定の種類の接続以外を遮断すること、外部からの不正アクセスを拒否することなどに用いられます。

0グッド

4クリップ

投稿2015/04/27 22:12

編集2015/04/27 23:06

PHPでWEBサイトを構築しています。
HTTPS通信でデータのやり取りを行っているのですが
透過型プロキシを利用する事で通信内容が丸見えである事がわかりました。

どうにかして透過型プロキシを検知して遮断する事は可能でしょうか?
またpythonでのサイト再構築も視野にいれているため、pythonでも
教えていただければ幸いです。

現在、非常に危険な状態で急を要しています。
よろしくお願いします。

(2015/4/28 08:03追記)
たぶん、そのような通信の場合は認証されていないSSL証明書を経由して
通信してくるので、HTTPSリクエスト時にクライアントが利用した証明書を
検証する事が出来ればいいのかなーなんて、そんな都合のいい事を考えてたりもします。
出来るかどうかわかりませんが…。

結果的に、サーバーサイドで透過型プロキシを検知して遮断したいので
方法は何でも構いません。

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

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

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

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

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

guest

回答4

0

HTTPSであっても、プロキシサーバを挟むと挟まないとにかかわらず、POSTするデータの内容はユーザー側で自由に生成することができます。さらに言えば、ログインが必要な場面であっても、ログインした状態のブラウザからコンソールを使えば任意のことを実行できます。使うソフトウェアはブラウザだけなので、システム的に検知することは不可能です。

HTTPSとは別な次元で、POST内容の整合性チェックはサーバ側できっちり行う必要があります。

投稿2015/04/28 00:16

maisumakun

総合スコア145184

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

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

inukujira

2015/04/28 00:25

なるほどぉ、って事はやっぱりHTTPSプロトコルの暗号化に頼らず POSTデータ自体に暗号化かけて、サーバー側でそれを復号化させる ような仕組みでないとダメって事かー、、。
guest

0

回答ありがとうございます。
やはりサーバーサイドで制限するのは不可能みたいですね。

body自体に暗号化を書けることで今回はfixしようと思います。
沢山のご意見ありがとうございました^^

投稿2015/04/28 10:04

inukujira

総合スコア130

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

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

0

端的に言えば、Man in the Middle的な透過型プロキシーがクライアントとサーバの経路上にいるかどうかは、サーバ側で検出することはできません。なので、サーバ側で対処する方法はないです。

質問者さんの心配は、Man in the Middle的な透過型プロキシーから、ユーザを守る方法を知りたい、ということですか?

投稿2015/04/28 05:02

chokojori

総合スコア971

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

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

chokojori

2015/04/28 05:07

簡単な方法としてEV SSL証明書を使い、ユーザにはブラウザのロケーションバーが「緑色」になっていることを確認するように呼びかける方法がありますかね。
inukujira

2015/04/28 10:04

回答ありがとうございます。 やはりサーバーサイドで制限するのは不可能みたいですね。 body自体に暗号化を書けることで今回はfixしようと思います。 沢山のご意見ありがとうございました^^
guest

0

ベストアンサー

透過型プロキシを利用する事で通信内容が丸見えである事がわかりました。

勘違いでは?HTTPSの場合、丸見えなのは暗号化後のデータであって、平文が見えるわけではありません。
透過型プロキシーサーバーもそうでないプロキシーサーバーも、プロキシーとしての機能は同じです。

投稿2015/04/27 22:42

otn

総合スコア84542

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

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

inukujira

2015/04/27 23:01

えっと、すいません。ちょっと回答の意味がわからないのですが 例えばmitmproxy等を利用して、HTTPS通信時のパケットを解析すると プレーン(平文)な状態で容易にresponse.bodyを閲覧する事が出来ます。 この場合、通信の改竄による不正なPOSTデータの送信が行われてしまうので それを防ぎたいと思っています。
otn

2015/04/27 23:17

それは、透過型かどうかには無関係です。 透過型プロキシーサーバー=ルーターに内蔵されたプロキシーサーバー また、お書きのmitmproxyなどを使うためには端末側にmitmproxyサーバーの証明書インストールが必要で、つまりユーザーが意図的にmitmproxyを使っているわけなので、ケアしなくていいと思います。
inukujira

2015/04/28 00:20

回答頂きましてありがとうございます。 すいません、素人の私には、なぜそれをケアしなくて良いのかがわかりません。 SSL通信を傍受したり改ざんする事が可能である限り、対策を講じる必要があると考えていますが 何か考え方が違うのかな…。 どちらにせよ、"ケアする場合"は何か対策する事は可能でしょうか? 質問にも追記しましたが、恐らく認証されていない証明書を利用していると 思いますので、非認証な証明書でSSLが行われた事をサーバー側で検証する事は可能でしょうか?
maisumakun

2015/04/28 00:57

中間にHTTPSを解読するようなプロキシサーバを入れた場合でも、そのプロキシサーバ~Webサーバの間では正規の証明書でHTTPSセッションを構築しています(というか、そうでないと通信が成立しません)。
ngyuki

2015/04/28 04:38

どうしてもということなら、ユーザーにクライアント証明書を配布してクライアント認証するとかはどうでしょうかね?
otn

2015/04/28 07:57

さきほども書きましたが、ユーザーがクライアントにそういうプロキシーサーバーの証明書をインストールしている=ユーザーはHTTPSを解釈するプロキシーサーバーを経由したアクセスを望んでいるわけなので、そのユーザーの自由を尊重するべきだと思いますよ。 典型的な例としては、企業が従業員のHTTPSアクセス内容を把握したい(情報漏洩検知)ということなら、そうさせてあげるべきだと思います。 まあ、もし「そういう企業はけしからんので、アクセスさせてあげない」ということなら、そういう禁止する自由もあるわけですが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問