当時も読んでいたけど、いまさらながらに理解したような気がする。
自分なりにまとめると「あるフォーマットAの下で、プログラムの外から入力された文字列strを使うときには、str中にAにおける特殊文字が原因で予想外の働きをする可能性がある。そこで、Aの下でstrを使うときには、str内に登場するAにおける特殊文字をすべて適切にエスケープしてから使うべし。」という教え。strをHTML中で使うならば使用の直前にHTMLの特殊文字をエスケープし、SQL中で使うならば使用の直前にSQLの特殊文字をエスケープし、URI中で使うならば使用の直前にURIの特殊文字をエスケープする。
私のように各フォーマットの仕様にうといプログラマーは、既にどなたかが作り、一般的に使われているライブラリーを用いて、それぞれのフォーマットでエスケープするべし。Railsの場合は、
- HTML中でstrを文字列として使う→ html_escape(str), <%=h str -%>
- SQL中でstrを文字列として使う → プレースフォルダーを使う User.find(:conditions => ["str = ?", str])
- YAML中にstrを格納する → ya2yamlを使う(内部でyaml_escapeという関数を用意し、エスケープを行っているみたい)
- URI中でstrを文字列として使う → URI.escape, URI.encode
以上、自分のまとめとして。