業務連絡です。
以前「language」につづけて「=」としてこのフォーラムに投稿すると 「Xlanguage=」のように「X」が付与されて投稿されていたことがありますが、もしかしたらこのフォーラムで利用しているソフトの仕様かなと思い報告しておきます。
これは「題名」では発生していません。
「メッセージ」本文でのみ発生するようです。
「=」をつけた場合 Xlanguage= ←X は書いていない
「=」をつけない場合 language
- この投稿は 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; } ... 省略 ...