検索
連載

その文字列はセーフ? 本当は奥深いデコード処理もいちどイチから! HTTP基礎訓練中(4)(2/3 ページ)

今日も楽しいメッセンジャータイム! ところが、ジュンさんから飛んできたのはまったく読めないけど、どこかで見たような文字列でした。今回はHTTPを取り扱う上では欠かせない「パーセントエンコード」について、気をつけなくてはならないことを学んでいきましょう(編集部)

PC用表示 関連情報
Share
Tweet
LINE
Hatena

あれ、%00が表示されない?!

 クウは、パーセントエンコードを勉強するために、リスト2のような入力された文字列をデコードして出力するだけの簡単なWebアプリケーションを作ってみた。

クウ 「まずは、0からスタートだな♪」

 クウは挙動を把握するために、「%00」から順に「%01」、「%02」……と打ち込んでみた。

クウ 「あれ……。ブラウザ上に何も表示されない」

 試しに英数字のようなものを入力してみると、ちゃんと表示される。どうしてだろう?と思い、再度「%00%01%02……」と打ち込んでみたが、やはりブラウザ上には何も表示されない。

クウ 「うーん。HTMLのソースの中に何か入ってるのかな……」

 ブラウザ上には何も表示されていなかったのだが、メモ帳でソースの表示をしてみたところ、変な文字が入っていた。

クウ 「なんだろ。これ……」

図1 試しにデコードしてみたが・・・
図1 試しにデコードしてみたが・・・

                       @IT messenger v1.4

ジュン ただいまー。

クウ おかえりなさい。なんかいろいろ試してたんですけど……。%00%01%02……とかやってみると変な文字になるみたいなんですよね


ジュン あー。0から試していったんだ。これは制御文字だよー♪

クウ 制御文字っすか……。それでちゃんと表示されないんですね……。

ジュン でもなかなか面白いところから試してるねー。

クウ そして、いきなりつまずいてます


ジュン よく出てくる制御文字でいくと、%00はNULL文字、%09はTab、%0d%0aは改行とかそういうようなものかな。

クウ むう……


ジュン ここらへんね。結構Webアプリで問題になりやすいとこなんだよねー。

クウ そうなんですか?! あんまり意識してなかったかもしれないです……。


 パーセントエンコードでは、記号や日本語のようなマルチバイト文字はもちろん、制御文字も表現することができる。コードが00〜1f、7fの文字が制御文字に相当するが、これらにパーセントを付与し「%00」のように表現することで 、デコード処理を行った際に制御文字として扱われることとなる。

 従って、Webアプリケーションとしては文字列が渡されることを期待している個所に対し、「%00」のような文字列を挿入するといった簡単な操作を行うことによって制御文字を入力することができてしまう。

Copyright © ITmedia, Inc. All Rights Reserved.

Security & Trust 記事ランキング

  1. 増える標的型ランサムウェア被害、現場支援から見えてきた実態と、脆弱性対応が「限界」の理由
  2. 日本人の約半数が「1年前より危険」と考えるオンライン詐欺とは マカフィーがホリデーショッピング詐欺に関して調査
  3. 「DX推進」がサイバー攻撃を増加させている? Akamaiがセキュリティレポートを公開
  4. 米国/英国政府が勧告する25の脆弱性、活発に悪用されている9件のCVEとは、その対処法は? GreyNoise Intelligence調査
  5. ランサムウェア攻撃を受けた企業、約6割が「サプライチェーンのパートナー経由で影響を受けた」 OpenText調査
  6. 6年間でAndroidにおけるメモリ安全性の脆弱性を76%から24%まで低減 Googleが語る「Safe Coding」のアプローチと教訓とは
  7. CISOが失敗を許容する組織を構築するために注目すべきは生成AIと何か? ガートナーが提言
  8. ゼロトラストの理想と現実を立命館大学 上原教授が語る――本当に運用できるか? 最後は“人”を信用できるかどうか
  9. インサイダーが原因の情報漏えいを経験した国内企業が約3割の今、対策における「責任の所在」の誤解とは
  10. 「ゼロトラスト」提唱者、ジョン・キンダーバーグ氏が語る誤解と本質――「ゼロトラストの第一歩は『何を守るべきか』を明確にすること」
ページトップに戻る