バージョン選択

フォーラム

メニュー

オンライン状況

60 人のユーザが現在オンラインです。 (54 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 60
もっと...

サイト内検索

質問 > フロント機能 > 商品の「詳細-メインコメント」で javascript を許可したい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
Adondevas
投稿日時: 2011/7/14 17:36
対応状況: −−−
常連
登録日: 2011/6/7
居住地:
投稿: 52
商品の「詳細-メインコメント」で javascript を許可したい
smarty_modifier_script_escape にてエスケープされているようなのですが、それは下記で行っているのでしょうか。

data/Smarty/templates_c/admin/%%2A^2AB^2AB93D92%%product.tpl.php



            <th>詳細-メインコメント<span class="attention">(タグ許可)*</span></th>
            <td>
                <span class="attention"><?php echo ((is_array($_tmp=$this->_tpl_vars['arrErr']['main_comment'])) ? $this->_run_mod_handler('script_escape', true, $_tmp) : smarty_modifier_script_escape($_tmp)); ?>
</span>
                <textarea name="main_comment" value="<?php echo ((is_array($_tmp=((is_array($_tmp=$this->_tpl_vars['arrForm']['main_comment'])) ? $this->_run_mod_handler('script_escape', true, $_tmp) : smarty_modifier_script_escape($_tmp)))) ? $this->_run_mod_handler('h', true, $_tmp) : smarty_modifier_h($_tmp)); ?>
" maxlength="<?php echo ((is_array($_tmp=@LLTEXT_LEN)) ? $this->_run_mod_handler('script_escape', true, $_tmp) : smarty_modifier_script_escape($_tmp)); ?>
" style="<?php if (((is_array($_tmp=$this->_tpl_vars['arrErr']['main_comment'])) ? $this->_run_mod_handler('script_escape', true, $_tmp) : smarty_modifier_script_escape($_tmp)) != ""): ?>background-color: <?php echo ((is_array($_tmp=@ERR_COLOR)) ? $this->_run_mod_handler('script_escape', true, $_tmp) : smarty_modifier_script_escape($_tmp)); ?>
;<?php endif; ?>" cols="60" rows="8" class="area60"><?php echo ((is_array($_tmp=((is_array($_tmp=$this->_tpl_vars['arrForm']['main_comment'])) ? $this->_run_mod_handler('script_escape', true, $_tmp) : smarty_modifier_script_escape($_tmp)))) ? $this->_run_mod_handler('h', true, $_tmp) : smarty_modifier_h($_tmp)); ?>
</textarea><br />
                <span class="attention"> (上限<?php echo ((is_array($_tmp=@LLTEXT_LEN)) ? $this->_run_mod_handler('script_escape', true, $_tmp) : smarty_modifier_script_escape($_tmp)); ?>
文字)</span>
            </td>



素人が手を出してはいけないようなファイル名、ソースを見ても何をやっているのかよくわかりません。

どの部分を変更すればよいのかご教示ください。
よろしくお願い申し上げます。

patapata
投稿日時: 2011/7/14 18:55
対応状況: −−−
仙人
登録日: 2010/7/7
居住地: 神奈川県
投稿: 502
Re: 商品の「詳細-メインコメント」で javascript を許可したい
JavascriptをHTMLに埋め込みたいのか、外部のjsファイルを参照して使いたいのか分りませんが・・・

まず許可タグを追加する通常の方法は、
システム設定→マスターデータ管理→mtb_allowed_tag
に該当するタグを追加することで可能です。
(Ver2.4.4ではscriptタグはコレだけじゃできなかったけど・・・、Ver2.11.Xは試してないので知りません。)

また、
>data/Smarty/templates_c/admin/%%2A^2AB^2AB93D92%%product.tpl.php
上記は、ただのキャッシュファイルです。
本物は、data/Smarty/templates\admin/products/product.tplの方です。

そちらを見てなにをやっているのかわからないと言うのであれば、PHP Smartyを勉強することからはじめると良いと思います。
Adondevas
投稿日時: 2011/7/15 11:41
対応状況: −−−
常連
登録日: 2011/6/7
居住地:
投稿: 52
Re: 商品の「詳細-メインコメント」で javascript を許可したい
ご返答あありがとうございます。

システム設定→マスターデータ管理→mtb_allowed_tag にて、

値「JavaScript」を登録 → それでもエスケープされる
値「java script:」を登録 → この値そのものがエスケープされる

となり、管理画面より対応することができそうにありませんでした。

引用:
本物は、data/Smarty/templates\admin/products/product.tplの方です。
そちらを見てなにをやっているのかわからないと言うのであれば、PHP Smartyを勉強することからはじめると良いと思います。


テキストエリアの表示とエラー表示を行っているのはわかるのですが、
「smarty_modifier_script_escape」がどのように行われているのかわかりません。

また、「smarty_modifier_script_escape」を data html 内で検索しても先のキャッシュ以外に該当ファイルを見つけることができませんでした。

どの箇所で行っているのか教えていただけないでしょうか。

nanasess
投稿日時: 2011/7/15 13:18
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2314
Re: 商品の「詳細-メインコメント」で javascript を許可したい
data/smarty_extends/modifier.script_escape.php です.
XSS 対策ですので, 解除は自己責任でお願いします
patapata
投稿日時: 2011/7/15 13:23
対応状況: −−−
仙人
登録日: 2010/7/7
居住地: 神奈川県
投稿: 502
Re: 商品の「詳細-メインコメント」で javascript を許可したい
引用:

値「JavaScript」を登録 → それでもエスケープされる
値「java script:」を登録 → この値そのものがエスケープされる

???通常登録するならscriptタグだと思いますが・・・


引用:

また、「smarty_modifier_script_escape」を data html 内で検索しても先のキャッシュ以外に該当ファイルを見つけることができませんでした。

data/smarty_extends/modifier.script_escape.php
Adondevas
投稿日時: 2011/7/15 13:40
対応状況: −−−
常連
登録日: 2011/6/7
居住地:
投稿: 52
Re: 商品の「詳細-メインコメント」で javascript を許可したい
nanasessさま patapataさま ご返信ありがとうございます。

data/smarty_extends/modifier.script_escape.php

の存在はわかっていたのですが、main_commentに対してそのファンクションにてエスケープしている箇所がわからないのです。

XXS対策は必要ですので、「詳細-メインコメント」のみ、または「商品登録」からのみ「java script:」の記述を許可したいのです。
(上記もエスケープされているようですが半角の 「JavaScript:」 です)

引用:
???通常登録するならscriptタグだと思いますが・・・


scriptタグそのものは detail.tpl に記述しています。
今回の質問は、そのスクリプトを詳細-メインコメントにて利用したいという主旨です。

よろしくお願い申し上げます。

Adondevas
投稿日時: 2011/7/15 17:27
対応状況: −−−
常連
登録日: 2011/6/7
居住地:
投稿: 52
Re: 商品の「詳細-メインコメント」で javascript を許可したい
DB のレコードのmain_commentに直接javascriptを記述してみましたが、
商品の詳細ページを表示する際にも #script tag escaped# に置換されています。

過去ログにて、おそらく Var.2.4x で同じような要望があったものの目的は達成されず尻切れトンボとなってしまっています。

何とかカスタマイズしたいのですが、方法はないでしょうか。
よろしくお願い申し上げます。



nanasess
投稿日時: 2011/7/15 17:37
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2314
Re: 商品の「詳細-メインコメント」で javascript を許可したい
SC_View の 59行目付近で有効化されています.


        $this->_smarty->default_modifiers = array('script_escape');


ただし, これを削除してしまうと, 全ての Smarty タグで script_escape が無効になってしまいますので, 詳細メインコメントのみということであれば, 他の全ての箇所に script_escape 修飾子を追加する必要があります.

これは現実的ではないので, メインコメントに script タグを使用するのは諦めて, テンプレートに直接記述するのが近道ではないかなと...
Adondevas
投稿日時: 2011/7/15 18:41
対応状況: −−−
常連
登録日: 2011/6/7
居住地:
投稿: 52
Re: 商品の「詳細-メインコメント」で javascript を許可したい
情報をありがとうございます。

何とか自己解決(本当の解決ではありませんが)できました。

data/smarty_extends/modifier.script_escape.php を下記の通り変更しました。


function smarty_modifier_script_escape($value) {

    if (is_array($value)) return $value;
	
	if( mb_strpos($value, "xxxxxxxxxx") === false ){
	
		$pattern = "/<script.*?>|<\/script>|java script:/i";
		$convert = "#script tag escaped#";
	
		if ( preg_match_all($pattern, $value, $matches) ) {
			return preg_replace($pattern, $convert, $value);
		} else {
			return $value;
		}
	} else {
		return $value;
	}
}


xxxxxxxxxx の部分には詳細コメントに記述する文字列を記述します。
例えば背景色と同じ色で「店舗名+何か」を入れるなどでも良いと思いますが、悪意の第三者にわからないような文字列にした方が良いと思います。

これで、「詳細-メインコメント」で javascript を利用することができるようになります。
とても嬉しいです!

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は90,331名です
総投稿数は110,370件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1693
8
red
1571
9
mcontact
1360
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.