Codelogy

« 2008年09月 | メイン | 2008年12月 »

2008年11月 アーカイブ

2008年11月09日

エスケープは出力時に

CGIプログラムは、HTMLを出力とすることが多い (というか殆ど) ため、入力データに対して HTML エスケープを施すものが多く見られます。
入力部
cgi    =CGI::new()
title  =CGI::escapeHTML(cgi.params['title'])
artist =CGI::escapeHTML(cgi.params['artist'])
asin   =CGI::escapeHTML(cgi.params['asin'])
出力部 (eRuby)
<table>
  <tr>
    <th>タイトル</th>
    <td><%=title%></td>
  </tr>
  <tr>
    <th>アーティスト</th>
    <td><%=artist%></td>
  </tr>
  <tr>
    <th>購入</th>
    <td><a href="http://www.amazon.co.jp/dp/<%=asin%>">Amazon.co.jp<a></td>
  </tr>
</table>
実行結果 (HTML出力)
<table>
  <tr>
    <th>タイトル</th>
    <td>American McGee's &quot;ALICE&quot; (Original Music Score)</td>
  </tr>
  <tr>
    <th>アーティスト</th>
    <td>Chris Vrenna</td>
  </tr>
  <tr>
    <th>購入</th>
    <td><a href="http://www.amazon.co.jp/dp/B00005OB0J">Amazon.co.jp<a></td>
  </tr>
</table>

HTMLのタグや属性の記述に使用される <, >, &, " といった特殊文字をエスケープすることで、クロスサイトスクリプティングなどの不正な出力を防止しているわけです。 このような、入力時にエスケープ処理を施す手法は多くの書籍・サイトなどで紹介され、実際に公開されている Web アプリケーションにおいても広く用いられています。 しかしながら、この手法には大きな問題点があります。

続きを読む "エスケープは出力時に" »

About 2008年11月

2008年11月にブログ "Codelogy" に投稿されたすべてのエントリーです。 過去のものから新しいものへ順番に並んでいます。

Prev: 2008年09月
Next: 2008年12月

メインページアーカイブページもご覧ください。