MovableType 4.25 のコメント投稿でJavaScript イベント属性(onclick等)を有効にする
Movable Type 4.25 のコメント欄の(X)HTML要素に onclick 属性や onleypress 属性を適用させる方法です。質問を頂きましたので本エントリーで回答します。
1.基本動作
コメント欄に次のような(X)HTMLを記述すると、
<a href="foo.html" onclick="foo()">foolink</a>
onclick 属性はサニタイズされて、
<a href="foo.html">foolink</a>
となります。これはコメントに書き込まれた onclick 属性によるXSS(クロスサイトスクリプティング)対策です。onclick のみだけでなく、JavaScript イベント属性(on~)は許容されていません。
なお、Movable Type 4.25 では、ブログ管理画面の「設定」→「コメント」で、「HTMLタグを制限」の項目に、JavaScript イベント属性を設定しても(下)、コメント投稿時に設定したJavaScript イベント属性はすべて除去されます。
2.JavaScript イベント属性を有効にする
lib/MT/Sanitize.pm の下記の赤色で示した1行をコメントアウトするか、削除すれば、JavaScript イベント属性の追加ができるようになります(1項で示した「HTMLタグを制限」に、JavaScript イベント属性を設定してください)。
...前略...
if ($ok_tags->{$name} ||
(exists $tag_attr->{$name} && $tag_attr->{$name} eq '/')) {
if ($inside) {
my @attrs;
while ($inside =~ m/([:\w]+)\s*=\s*(['"])(.*?)\2/gs) {
my ($attr, $q, $val) = (lc($1), $2, $3);
# javascript event attributes explicitly not allowed
next if $attr =~ m/^on/;
if ($ok_tags->{'*'}{$attr} ||
(ref $ok_tags->{$name} && ($ok_tags->{$name}{'*'} || $ok_tags->{$name}{$attr}) && !exists($ok_tags->{$name}{'!' . $attr}))) {
...後略...
なお、コメント投稿において JavaScript イベント属性を有効にすると、XSSによる脆弱性が伴いますので、変更に際してはご自身の責任で行なってください。
この XSS 対処の仕様は4.25 から追加されています。
Posted by yujiro このページの先頭に戻る
- Movable Typeのコメント完了ページの内容を記事ごとに振り分ける方法
- Movable Typeで特定カテゴリのコメントを表示する方法
- Movable TypeでreCaptchaを利用する
- Movable Typeでカテゴリ別+ブログ記事別に新着コメントを表示する
- Movable Type 5でコメント投稿フォームをポップアップする
- Movable TypeのコメントでFacebookアカウント認証を有効にする
- Yahoo! JAPAN OpenID を省略表示する(その2)
- コメントにHTMLタグ挿入ボタンをつける(MT4/MT5版)
- コメント投稿にTwitterのOAuth認証を導入
- Movable Type 5でのMTCommentsタグの動作
- ブログ記事とコメントをひとつのフィードで配信する
- Movable Typeのコメント一覧からウェブページのコメントを除外して表示する
- Movable Typeのコメントにimg要素を許容する
- Movable Type(MT)のコメント投稿者の承認と禁止について
- Movable Type 5(MT5)のコメントのページ分割機能(その2:カスタマイズ)
トラックバックURL
コメントする
greeting