Open kujiy opened 8 years ago
僕はだいたい取得したテーブルのデータなどを格納するオブジェクトとして XoopsSimpleObject クラスを継承したクラスを使っていて、その場合、
<{$object->getShow('name')}>
でエスケープされた値を出しています。 何らかの理由で生値を出したい場合は
<{$object->get('name')}>
を使います。
一般論としては、kujiyさんの書かれているとおり、何も指定しなければ espace のほうが安全かなと思います(最近のフレームワークなどはそうなっているのが多いような)。
xoopsのsmartyは生の値?を出力するのがデフォルトなので、htmlタグをそのまま出力する場合は自前でescapeする必要があります。
例1:
これはセキュリティに問題を抱えたコードが生まれやすい仕様のため、
などとしてデフォルトをエスケープにして、あえてhtmlタグ等をそのまま出したい場合だけ
とする仕様が、(一長一短ではありますが)基盤となるCMSの仕組みとしてはいいように思います。
・・ということが社内で話題になったのですが、一般的には/xoopsの方針としてはどうなんでしょうか。(自分一人なら自動エスケープは使わないですが、セキュリティに弱いコーダーも入り交じるOSSの場では自動エスケープをデフォルトにしたほうがいいように感じます。)
可能であればどなたかのご意見を伺いたく思います。いかがでしょうか。