language=hoge と記述すると  Xlanguage=hoge になってします

language=hoge と記述すると  Xlanguage=hoge になってします

- 和田 勇 の投稿
返信数: 7
業務連絡です。

以前「language」につづけて「=」としてこのフォーラムに投稿すると 「Xlanguage=」のように「X」が付与されて投稿されていたことがありますが、もしかしたらこのフォーラムで利用しているソフトの仕様かなと思い報告しておきます。

これは「題名」では発生していません。
「メッセージ」本文でのみ発生するようです。

「=」をつけた場合 Xlanguage=  ←X は書いていない

「=」をつけない場合 language



和田 勇 への返信

Re: Xlanguage=hoge と記述すると  Xlanguage=hoge になってします

- 帯田 木偶太 の投稿
書き込み時にフォーマットとして Moodle オートフォーマット、
HTML フォーマットまたは Markdown フォーマットを選択すると
起きる現象のようです。

プレインテキストフォーマットだと生じないようです。

この書き込みはプレインテキストフォーマットで書き込んでいます。

「=」をつけた場合 language=  ←X は書いていない
帯田 木偶太 への返信

Re: Xlanguage=hoge と記述すると  Xlanguage=hoge になってします

- 奥村 晴彦 の投稿
和田さま、帯田さま、ありがとうございます。
プレインテキストフォーマットで書くことが多いので、気づいていませんでした。
奥村 晴彦 への返信

Re: Xlanguage=hoge と記述すると  Xlanguage=hoge になってします

- 和田 勇 の投稿
  • この投稿は markdown を指定しています。
  • ごめんなさい、テストを含めて何度か投稿試験が一部メールで流れてしまいましたね。

  • もう対処されたと思ったらまだ症状が出ていますね。

  • moodle のソースが git で公開されていたので調べてみました。

    • language の他 onXXX でも発生していたようです

      • language と onXXX のテスト

        • Xlanguage=foo XonABC=123
    • 修正情報

        commit 4e8d084bc9d0a2357df8de296f91240c9cae70cf
        Author: Petr Skoda 
        Date:   Sat Nov 19 13:22:33 2011 +0100
    
            MDL-21617 remove problematic attempt to remove script events from random text
    
            This "feature" was used to partially eliminate XSS attacks on vulnerable code. Developers MUST use clean_text() on HTML text fragments only, it can not be used on random html tag attributes.
    
            This change may simplify a bit exploiting of vulnerable code, but every XSS cheat sheet contains information how to work around this outdated anti-XSS measure.
    
            Please note this change fixes many problems with valid uses of Xlanguage= or XonXXXXX= such as in urls, tex, code samples, etc.
    
        diff --git a/lib/weblib.php b/lib/weblib.php
        index 155b2b0c07d..eadfe5d8cf3 100644
        --- a/lib/weblib.php
        +++ b/lib/weblib.php
        ... 省略 ...
        @@ -1439,9 +1442,10 @@ function clean_text($text, $format = FORMAT_HTML, $options = array()) {
    
             $text = purify_html($text, $options);
    
        -    // Remove potential script events - some extra protection for undiscovered bugs in our code
        -    $text = preg_replace("~([^a-z])language([[:space:]]*)=~i", "$1Xlanguage=", $text);
        -    $text = preg_replace("~([^a-z])on([a-z]+)([[:space:]]*)=~i", "$1Xon$2=", $text);
        +    // Originally we tried to neutralise some script events here, it was a wrong approach because
        +    // it was trivial to work around that (for example using style based XSS exploits).
        +    // We must not give false sense of security here - all developers MUST understand how to use
        +    // rawurlencode(), htmlentities(), htmlspecialchars(), p(), s(), moodle_url, html_writer and friends!!!
    
             return $text;
         }
        ... 省略 ...
    
和田 勇 への返信

Re: Xlanguage=hoge と記述すると  Xlanguage=hoge になってします

- 奥村 晴彦 の投稿
和田さま、ありがとうございます。この2行をコメントアウトしました。
奥村 晴彦 への返信

Re: Xlanguage=hoge と記述すると  Xlanguage=hoge になってします

- 和田 勇 の投稿
  • この投稿は markdown で行ってます
  • 治ったようですね。

  • テスト

    • language=foo
    • onABC=123
和田 勇 への返信

Re: language=hoge と記述すると  Xlanguage=hoge になってします

- 帯田 木偶太 の投稿
題名部分については、プレインテキストフォーマットでの返信でも症状が
生じていたことに気がつきましたが、これも治っているか、確認のため、
スレッド冒頭に対して返信してみています。

この返信は、プレインテキストフォーマットです。

「=」をつけた場合 language=  ←X は書いていない
帯田 木偶太 への返信

Re: language=hoge と記述すると  Xlanguage=hoge になってします

- 和田 勇 の投稿
帯田さん、ありがとうございます。

git のソースを language で調べてみてもあまり良い情報が得られず、頓挫していましたが、
帯田さんの投稿がヒントになって修正情報から

git log | rg -B 10 language=

で修正内容が特定できました。