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

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

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

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

Q&A

3回答

11259閲覧

PHP:base64でエンコードされた文字列をGETで渡すのは安全ですか?

obake

総合スコア21

PHP

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

0グッド

1クリップ

投稿2014/09/22 17:23

PHPについて、ご相談があって書き込ませてもらっています。

base64でエンコードされた文字列をGETパラメータで渡すということを考えています。この方法は安全でしょうか?

アドバイスお願いします!

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

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

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

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

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

guest

回答3

0

渡すデータの意味によって 安全 の判定はかわるとおもいます。
パスワードのような機密情報だとしたが、安全ではありません。
なぜなら BASE64 は簡単に元の文字に戻せるからです。

画像データのバイナリーを渡す場合でも注意が必要です。
BASE64 の利用について、セキュリティについてこんな記事があります。

...
HTMLでimgタグを使って画像を表示したい場合、srcに画像のURLを入れる。これが近年ではcanvasタグやFile APIの導入にともなって、Base64エンコードされた文字列を画像データとしてsrcに入れるケースもブログなどで紹介されている。もしこれをユーザに任意の画像をアップロードさせるWebアプリに使うならXSSに気を払わなければならないという話。
...
なにも考えずにDataURL形式で画像を取りまわしてHTMLに埋め込んだりしようとすると、任意のスクリプトが埋め込めてしまうということ。テンプレートエンジンのオートエスケープなどで防がれることもあるだろうが、うっかり画像ファイルデータならエスケープしなくてもいいだろうとオートエスケープを外してしまうかもしれない。
...

stackoverflow に こんな QA のページがありましたので、紹介しておきます。

投稿2014/09/24 15:31

katoy

総合スコア22324

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

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

0

安全かどうかというのが第三者によるパケット盗聴に対して言っているならそんなに安全じゃありません。
base64はただのエンコードなので誰でもデコード出来るからです。
特定の記号が使えて特徴的なのですぐにbase64使ってるってわかりますし。

なので安全性を気にするのであればSSLのようなちゃんとした暗号化を用いましょう。

↑は完全にPOSTと勘違いして書いてました。
まぁbase64は特徴的で誰でもエンコード/デコードできるから改竄・解析が容易いってのはあるので、
base64エンコードしたからと言ってセッションIDみたいな見られて困るのを付けるのはやめましょう。
ただ先に言った通り改竄も容易いのでちゃんと平文同様パラメータのチェックはしましょう。

投稿2014/09/24 08:23

kinme

総合スコア843

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

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

kinme

2014/09/24 15:21

あ、GETパラメータの話かw
guest

0

質問の意図がわからないので勝手に判断しました。
0. GET方式で暗号化文字列を渡しても良いのか。
なんの問題もないかと思います。
例として、現に2重送信防止やクローリングツール対策そのようなパラメータをよく使われております。
ただ、HTTPS通信方式をお勧めします。

  1. BASE64の暗号は安全か。

これは単に複雑に組み合わせて暗号化すれば良いと思います。

投稿2016/03/19 12:32

JinwonKim

総合スコア312

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問