Mensagem enviada por Yuichi Saotome

吉田さん

> サニタイズするのではなく、「管理 >> ユーザ >> パーミッション >> ロールの定義」
対応ありがとうございました.
提案の通り,ロールの定義のリスク項目にXSSアイコンを表示してくださる事になるようですね.
提案がとおったのも吉田さんのご協力があったからこそだと思います.
感謝します.

また,奥村先生がおっしゃっているのはごもっともです.
たしかに該当箇所でhtmlspechalchars()を設定するのは原則的には良くないですね.
Moodleの他のコードで似たような箇所があったので,提案してしまいました.
大変失礼しました.
ただ,この場合は出力時にサニタイズするとSCORM教材で影響があるそうなので,やはり,Petr Škodaさんもおっしゃる通り「教師性善説」を信じるしかないようですね.
少なくともリスクが分かるようになるそうなので管理者も対応できるようになると思います.
ありがとうございました.
五月女です.

ご指導ありがとうございます.

>投稿内容の「 Security Level」を「Serioust security issue」として投稿したので、Moodle Trackerのユーザアカウントを持っていない人には表示されていないのだと思います。サーチエンジン等でセキュリティに関するバグ投稿内容が取得され ることを防ぐためだと思います。
>大変お手数ですが、Moodle Trackerにユーザアカウントを登録して投稿内容 (MDL-10057) をご覧ください。

最初に開いた時に,「アカウントを作ってください」といわれましたので,ユーザ登録はしているのですが,それでも表示されないのです.
たぶん一般ユーザでは表示できないんですね.悲しい
Trackerへの投稿方法の参考にさせていただこうと思っていたので残念です.
信州大学の五月女です.

大変素早い対応ありがとうございました.
吉田さんのような方がいらっしゃるからこそ,これまでも,そしてこれからもMoodleは発展していくのでしょう.

ただ,下記の件については反論があります.

> # 管理者権限を持った人が「hoge<script>alert("hogehoge")</script>」というようなコードを入れることは
> # 非常に稀だと思いますが、念のため対策を施した方が良いですね。

現実には管理者権限を保有している人が「不正な処理を行わない人」とは限らないことが多々あります.そのこともあって,ロールの定義画面には"リスク"の項目が一応表示されているのではないでしょうか.
たとえ管理者権限を保有している人でも不正な処理ができてしまうのは非常にまずいです.
また,今回の問題は,ロールで"moodle/category:create"権限を保有する人に影響がありますので,影響範囲は管理者権限保有者より広いと思われます.

今後もよろしくお願いします.

#追記です.
http://tracker.moodle.org/browse/MDL-10057なのですが,"操作が許可されていない"と出てERRORになってしまいます.前後のMDL-10056MDL-10058は閲覧できるのにMDL-10057だけ閲覧できません.
なぜなのでしょうか?初心者的な質問で申し訳ありません.
五月女です.

> pathinfo()がマルチバイトに対応していないかどうかの確証は難しいですね

コードも確認せずにただ実行しただけでした.
大変もうしわけありません.
.htaccessにでdefault_charset = "UTF-8"にして再度実行してみました.

以下結果です.
------------------------------------------------------------------------------------------------
test2.php by FreeBSD 6.2-RELEASE-p4 i386 PHP5.2.3
Case1(C:/xampplite/1/index.class.php):dirname=[C:/xampplite/1],basename=[index.class.php],extension=[php]

Notice: Undefined index: extension in /home/meshi/public_html/test2.php on line 30
Case2(C:/xampplite/1/):dirname=[C:/xampplite],basename=[1],extension=[]

Notice: Undefined index: extension in /home/meshi/public_html/test2.php on line 33
Case3(C:/xampplite/1):dirname=[C:/xampplite],basename=[1],extension=[]

Notice: Undefined index: extension in /home/meshi/public_html/test2.php on line 36
Case4(C:/):dirname=[.],basename=[C:],extension=[]

Case1(C:/xampplite/1/index.class.php):dirname=[C:/xampplite/1],basename=[index.class.php],extension=[php]
Case2(C:/xampplite/1/):dirname=[C:/xampplite/1],basename=[],extension=[]
Case3(C:/xampplite/1):dirname=[C:/xampplite],basename=[1],extension=[]
Case4(C:/):dirname=[C:],basename=[],extension=[]


-test2.php by CentOS 4.4 2.6.9-42.ELsmp i386 PHP5.1.6
Case1(C:/xampplite/1/index.class.php):dirname=[C:/xampplite/1],basename=[index.class.php],extension=[php]
Case2(C:/xampplite/1/):dirname=[C:/xampplite],basename=[xampplite],extension=[]
Case3(C:/xampplite/1):dirname=[C:/xampplite],basename=[xampplite],extension=[]
Case4(C:/):dirname=[.],basename=[C:],extension=[]

Case1(C:/xampplite/1/index.class.php):dirname=[C:/xampplite/1],basename=[index.class.php],extension=[php]
Case2(C:/xampplite/1/):dirname=[C:/xampplite/1],basename=[],extension=[]
Case3(C:/xampplite/1):dirname=[C:/xampplite],basename=[1],extension=[]
Case4(C:/):dirname=[C:],basename=[],extension=[]
------------------------------------------------------------------------------------------------

> なんとか来週末までには日本語ファイル名/フォルダ名を使用できるパッチ(fs_converter)の情報をまとめようと思います.
実は私も同じようなことをやっていたりします.
といっても私の場合はファイル名からパスから,すべてUTF-8に変更するようにして対応しています.
ファイルのアップロード・ダウンロードやzip展開・圧縮など一通り変更したんですが,Mac OS XのUTF-8-MACへの対応がうまくいっていません.
文字コードの問題って難しいです.
五月女です.

>どたなか,Windows以外の環境の方,上に添付しましたtest.phpとtest2.phpの実行結果を教えて頂けないでしょうか.

参考になるかわかりませんが,
-FreeBSD 6.2-RELEASE-p4 i386 PHP5.2.3
-CentOS 4.4 2.6.9-42.ELsmp i386 PHP5.1.6
にて実行してみました.

以下実行結果です.
-test.php by FreeBSD 6.2-RELEASE-p4 i386 PHP5.2.3
Case1(C:/xampplite/htdocs/index.html):dirname=[C:/xampplite/htdocs],basename=[index.html],extension=[html]

Notice: Undefined index: extension in /home/meshi/public_html/test.php on line 15
Case2(C:/xampplite/htdocs/):dirname=[C:/xampplite],basename=[htdocs],extension=[]

Notice: Undefined index: extension in /home/meshi/public_html/test.php on line 18
Case3(C:/xampplite/htdocs):dirname=[C:/xampplite],basename=[htdocs],extension=[]

Notice: Undefined index: extension in /home/meshi/public_html/test.php on line 21
Case4(C:/):dirname=[.],basename=[C:],extension=[]

Notice: Undefined index: extension in /home/meshi/public_html/test.php on line 24
Case5(/):dirname=[/],basename=[],extension=[]

Notice: Undefined index: dirname in /home/meshi/public_html/test.php on line 27

Notice: Undefined index: extension in /home/meshi/public_html/test.php on line 27
Case6():dirname=[],basename=[],extension=[]

Notice: Undefined index: extension in /home/meshi/public_html/test.php on line 30
Case7(C:):dirname=[.],basename=[C:],extension=[]
-test.php by CentOS 4.4 2.6.9-42.ELsmp i386 PHP5.1.6
 Case1(C:/xampplite/htdocs/index.html):dirname=[C:/xampplite/htdocs],basename=[index.html],extension=[html]
Case2(C:/xampplite/htdocs/):dirname=[C:/xampplite],basename=[htdocs],extension=[]
Case3(C:/xampplite/htdocs):dirname=[C:/xampplite],basename=[htdocs],extension=[]
Case4(C:/):dirname=[.],basename=[C:],extension=[]
Case5(/):dirname=[/],basename=[],extension=[]
Case6():dirname=[],basename=[],extension=[]
Case7(C:):dirname=[.],basename=[C:],extension=[]
-test2.php by FreeBSD 6.2-RELEASE-p4 i386 PHP5.2.3
Case1(C:/xampplite/・・index.class.php):dirname=[C:/xampplite/・曽,basename=[index.class.php],extension=[php]

Notice: Undefined index: extension in /home/meshi/public_html/test2.php on line 30
Case2(C:/xampplite/・・):dirname=[C:/xampplite],basename=[・曽,extension=[]

Notice: Undefined index: extension in /home/meshi/public_html/test2.php on line 33
Case3(C:/xampplite/・・:dirname=[C:/xampplite],basename=[・曽,extension=[]

Notice: Undefined index: extension in /home/meshi/public_html/test2.php on line 36
Case4(C:/):dirname=[.],basename=[C:],extension=[]

Case1(C:/xampplite/・・index.class.php):dirname=[C:/xampplite/・曽,basename=[index.class.php],extension=[php]
Case2(C:/xampplite/・・):dirname=[C:/xampplite/・曽,basename=[],extension=[]
Case3(C:/xampplite/・・:dirname=[C:/xampplite],basename=[・曽,extension=[]
Case4(C:/):dirname=[C:],basename=[],extension=[]
-test2.php by CentOS 4.4 2.6.9-42.ELsmp i386 PHP5.1.6
Case1(C:/xampplite/・・index.class.php):dirname=[C:/xampplite/・曽,basename=[index.class.php],extension=[php]
Case2(C:/xampplite/・・):dirname=[C:/xampplite],basename=[xampplite],extension=[]
Case3(C:/xampplite/・・:dirname=[C:/xampplite],basename=[xampplite],extension=[]
Case4(C:/):dirname=[.],basename=[C:],extension=[]

Case1(C:/xampplite/・・index.class.php):dirname=[C:/xampplite/・曽,basename=[index.class.php],extension=[php]
Case2(C:/xampplite/・・):dirname=[C:/xampplite/・曽,basename=[],extension=[]
Case3(C:/xampplite/・・:dirname=[C:/xampplite],basename=[・曽,extension=[]
Case4(C:/):dirname=[C:],basename=[],extension=[]