<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
	>
<channel>
	<title>テンプレートシステムはデフォルトでエスケープするべきじゃなかろうか？ へのコメント</title>
	<atom:link href="http://www.ryo.com/2006/08/07/251/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ryo.com/2006/08/07/251/</link>
	<description>by Ryosuke Hosoi</description>
	<lastBuildDate>Mon, 29 Aug 2011 16:41:42 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>りょすけ より</title>
		<link>http://www.ryo.com/2006/08/07/251/comment-page-1/#comment-462</link>
		<dc:creator>りょすけ</dc:creator>
		<pubDate>Fri, 11 Aug 2006 07:34:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.ryo.com/ryo/?p=251#comment-462</guid>
		<description>かなださんこんちわです。
そうですよね、散在はよくないですね。
プロジェクトレベルできっちりとXSS対策の方針固めとかないと、あとあと悲惨なことになるのはよくある話になっちゃいますね。</description>
		<content:encoded><![CDATA[<p>かなださんこんちわです。<br />
そうですよね、散在はよくないですね。<br />
プロジェクトレベルできっちりとXSS対策の方針固めとかないと、あとあと悲惨なことになるのはよくある話になっちゃいますね。</p>
]]></content:encoded>
	</item>
	<item>
		<title>かなだ より</title>
		<link>http://www.ryo.com/2006/08/07/251/comment-page-1/#comment-461</link>
		<dc:creator>かなだ</dc:creator>
		<pubDate>Fri, 11 Aug 2006 02:30:34 +0000</pubDate>
		<guid isPermaLink="false">http://www.ryo.com/ryo/?p=251#comment-461</guid>
		<description>こんにちは。デフォルトでエスケープさせる件ですが、難しいところですね。

どうしても生の値をテンプレートに埋めたい場面は出てくるでしょうし、その部分はコード側でエスケープする必要がありますよね。このようにエスケープをする場所がテンプレートとコード中に散在するとXSSの有無の見通しが悪くなると思うんですよ。

出力段階でエスケープさせるのを「出口方式」とするなら、僕は「入口方式」の方を採用してます（URL参照）。「入口と出口の両方で」と簡単にいけばこんなに悩まなくても済むのに……。

http://kaede.to/~canada/doc/yoyiyayiye

ここではGETやPOSTしか触れてませんが、ENV, Session, Cookie周りやDBの戻り値などにも気をつける必要がありますよね……。</description>
		<content:encoded><![CDATA[<p>こんにちは。デフォルトでエスケープさせる件ですが、難しいところですね。</p>
<p>どうしても生の値をテンプレートに埋めたい場面は出てくるでしょうし、その部分はコード側でエスケープする必要がありますよね。このようにエスケープをする場所がテンプレートとコード中に散在するとXSSの有無の見通しが悪くなると思うんですよ。</p>
<p>出力段階でエスケープさせるのを「出口方式」とするなら、僕は「入口方式」の方を採用してます（URL参照）。「入口と出口の両方で」と簡単にいけばこんなに悩まなくても済むのに……。</p>
<p><a href="http://kaede.to/~canada/doc/yoyiyayiye" rel="nofollow">http://kaede.to/~canada/doc/yoyiyayiye</a></p>
<p>ここではGETやPOSTしか触れてませんが、ENV, Session, Cookie周りやDBの戻り値などにも気をつける必要がありますよね……。</p>
]]></content:encoded>
	</item>
	<item>
		<title>りょすけ より</title>
		<link>http://www.ryo.com/2006/08/07/251/comment-page-1/#comment-456</link>
		<dc:creator>りょすけ</dc:creator>
		<pubDate>Tue, 08 Aug 2006 18:11:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.ryo.com/ryo/?p=251#comment-456</guid>
		<description>komagataさん、kunitさん、最新情報をどうもです
さすが国産フレームワークは痒いところに手が届く感じですね
# EthnaもMapleも一度じっくり使ってみたいんですが、なかなかじっくり使う時間が取れなくて・・・

smartyのdefault_modifiersはマニュアル
http://smarty.php.net/manual/en/variable.default.modifiers.php
にも記述がありました。まったく見逃してました！反省</description>
		<content:encoded><![CDATA[<p>komagataさん、kunitさん、最新情報をどうもです<br />
さすが国産フレームワークは痒いところに手が届く感じですね<br />
# EthnaもMapleも一度じっくり使ってみたいんですが、なかなかじっくり使う時間が取れなくて・・・</p>
<p>smartyのdefault_modifiersはマニュアル<br />
<a href="http://smarty.php.net/manual/en/variable.default.modifiers.php" rel="nofollow">http://smarty.php.net/manual/en/variable.default.modifiers.php</a><br />
にも記述がありました。まったく見逃してました！反省</p>
]]></content:encoded>
	</item>
	<item>
		<title>kunit より</title>
		<link>http://www.ryo.com/2006/08/07/251/comment-page-1/#comment-455</link>
		<dc:creator>kunit</dc:creator>
		<pubDate>Tue, 08 Aug 2006 13:24:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.ryo.com/ryo/?p=251#comment-455</guid>
		<description>MapleのSmartyViewも3.1からデフォルトエスケープにしました。

Smartyは「$default_modifiers」というのを使って、デフォルトエスケープにすることはできます。で、エスケープしてほしくない時は{$hoge&#124;smarty:nodefaults}とすることになります。

ただし、{foreach from=$from item=item}の$fromをエスケープしようとしてエラーがでたりと少々わずらわしいというのはあります。（{foreach from=$from&#124;smarty:nodefaults item=item}としないといけないです）</description>
		<content:encoded><![CDATA[<p>MapleのSmartyViewも3.1からデフォルトエスケープにしました。</p>
<p>Smartyは「$default_modifiers」というのを使って、デフォルトエスケープにすることはできます。で、エスケープしてほしくない時は{$hoge|smarty:nodefaults}とすることになります。</p>
<p>ただし、{foreach from=$from item=item}の$fromをエスケープしようとしてエラーがでたりと少々わずらわしいというのはあります。（{foreach from=$from|smarty:nodefaults item=item}としないといけないです）</p>
]]></content:encoded>
	</item>
	<item>
		<title>komagata より</title>
		<link>http://www.ryo.com/2006/08/07/251/comment-page-1/#comment-454</link>
		<dc:creator>komagata</dc:creator>
		<pubDate>Tue, 08 Aug 2006 10:53:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.ryo.com/ryo/?p=251#comment-454</guid>
		<description>ホントにそうですね。
自分でも　&#124;escape　１００％付け忘れあります。

フレームワークでいうと、Ethnaはエスケープ済みがデフォルトでした。（たしか）

Smartyだと、フィルターで全部エスケープされるようにしておいて、したくないのだけ逆に {$hogehoge&#124;unescape}とか作っておけばいいんですかね。</description>
		<content:encoded><![CDATA[<p>ホントにそうですね。<br />
自分でも　|escape　１００％付け忘れあります。</p>
<p>フレームワークでいうと、Ethnaはエスケープ済みがデフォルトでした。（たしか）</p>
<p>Smartyだと、フィルターで全部エスケープされるようにしておいて、したくないのだけ逆に {$hogehoge|unescape}とか作っておけばいいんですかね。</p>
]]></content:encoded>
	</item>
	<item>
		<title>Keisuke より</title>
		<link>http://www.ryo.com/2006/08/07/251/comment-page-1/#comment-453</link>
		<dc:creator>Keisuke</dc:creator>
		<pubDate>Tue, 08 Aug 2006 10:07:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.ryo.com/ryo/?p=251#comment-453</guid>
		<description>&lt;blockquote&gt;ふと思ったのが「テンプレートシステムはデフォルトでエスケープするべきじゃなかろうか？」ってこと。&lt;/blockquote&gt;

これ、激しく賛成ですね。
でも現実としてそうなってないし、やっぱりWebアプリ側でちゃんとしてあげるしかない気がします。
でも、inputとoutputの両方でデータのチェックして、正当性をWebアプリが保障するのは、「PHP」とか言っている時点で相当メンドウな作業ですね（開発・メンテナンス全般で）。
世の中、そうそう上手くできてませんです。</description>
		<content:encoded><![CDATA[<blockquote><p>ふと思ったのが「テンプレートシステムはデフォルトでエスケープするべきじゃなかろうか？」ってこと。</p></blockquote>
<p>これ、激しく賛成ですね。<br />
でも現実としてそうなってないし、やっぱりWebアプリ側でちゃんとしてあげるしかない気がします。<br />
でも、inputとoutputの両方でデータのチェックして、正当性をWebアプリが保障するのは、「PHP」とか言っている時点で相当メンドウな作業ですね（開発・メンテナンス全般で）。<br />
世の中、そうそう上手くできてませんです。</p>
]]></content:encoded>
	</item>
</channel>
</rss>

