PHPについて、ご相談があって書き込ませてもらっています。
base64でエンコードされた文字列をGETパラメータで渡すということを考えています。この方法は安全でしょうか?
アドバイスお願いします!
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答3件
0
渡すデータの意味によって 安全 の判定はかわるとおもいます。
パスワードのような機密情報だとしたが、安全ではありません。
なぜなら BASE64 は簡単に元の文字に戻せるからです。
画像データのバイナリーを渡す場合でも注意が必要です。
BASE64 の利用について、セキュリティについてこんな記事があります。
- HTML5, JavaScript: Base64エンコードされた画像をアップロードする上で http://elicon.blog57.fc2.com/blog-entry-369.html より
...
HTMLでimgタグを使って画像を表示したい場合、srcに画像のURLを入れる。これが近年ではcanvasタグやFile APIの導入にともなって、Base64エンコードされた文字列を画像データとしてsrcに入れるケースもブログなどで紹介されている。もしこれをユーザに任意の画像をアップロードさせるWebアプリに使うならXSSに気を払わなければならないという話。
...
なにも考えずにDataURL形式で画像を取りまわしてHTMLに埋め込んだりしようとすると、任意のスクリプトが埋め込めてしまうということ。テンプレートエンジンのオートエスケープなどで防がれることもあるだろうが、うっかり画像ファイルデータならエスケープしなくてもいいだろうとオートエスケープを外してしまうかもしれない。
...
stackoverflow に こんな QA のページがありましたので、紹介しておきます。
- Passing base64 encoded strings in URL http://stackoverflow.com/questions/1374753/passing-base64-encoded-strings-in-url
投稿2014/09/24 15:31
総合スコア22328
0
安全かどうかというのが第三者によるパケット盗聴に対して言っているならそんなに安全じゃありません。
base64はただのエンコードなので誰でもデコード出来るからです。
特定の記号が使えて特徴的なのですぐにbase64使ってるってわかりますし。
なので安全性を気にするのであればSSLのようなちゃんとした暗号化を用いましょう。
↑は完全にPOSTと勘違いして書いてました。
まぁbase64は特徴的で誰でもエンコード/デコードできるから改竄・解析が容易いってのはあるので、
base64エンコードしたからと言ってセッションIDみたいな見られて困るのを付けるのはやめましょう。
ただ先に言った通り改竄も容易いのでちゃんと平文同様パラメータのチェックはしましょう。
投稿2014/09/24 08:23
総合スコア843
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。