hoshikuzuの日記

2004-04-24

■DOCTYPE宣言とか叫んでみる。

はてなグループへの要望:こういうふうに要望をなげるのかなぁ

以下、何点かご検討くださいませ>g:hatena:id:hatenagroup

はてなグループへの要望というのをsuikan様が作っておいでなのでこちらにも。

DOCTYPE宣言欲しくないのかなぁ

この際ですから、はてなで使えるDOCTYPE宣言を設定画面で選択させてもらって、それが出力HTMLに反映されると非常に嬉しかったりしませんか?

私的には、<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> を使いたいです。他のを使いたい人もいるのでは?

WindowsIEでのCSSのコンパチモードはいやーんとか(笑)4/25追記:この項暫定的に反映して頂きました。4.01 Transitional 固定みたいな気がします。理想は日記著述者が各宣言の一覧から選択できることなのですけれど微妙な影響も大かもしれませんね。現状、はてなで見とめられている各種HTML要素や属性を、気をつけずに使用するならば、HTML 4.01 Transitional ということになるのかな?と思っている次第です。これをきっかけに色々皆さんにお考え頂ければと。

少しでもXHTMLに近づける努力をはらっている人々にとっては、はてなはちょっとキビシイと思うけれども、対応するとしたならば、おそらく、次のようなものも欲しいはずなのですが、その手の要望って出ませんかねぇ。XML宣言周辺のおはなしなのですけれども。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[]>
<html xml:lang="ja" xmlns="http://www.w3.org/1999/xhtml">

<HTML> には LANG 属性が欲しいかな。

<HTML> には LANG 属性が欲しいです。

せっかくunicode化するので、この際、ブロックレベルの各要素で使えるLANG 属性も欲しいかな。言語の切り替え。英語の警句を、lang="ja-JP"のまま表現するのって、私は気にしませんが、一部で他国籍化しつつあるはてなダイアリーですから必要なのかも。でも、こんなのは反則。書き手が気をつければ良い。

<P lang="fr">
<IMG src="france.png" alt="フランスの地図">
</P>

グループなりのLINK要素の使い方。

はてなグループなので、表玄関のページというかグループのインデックスがあるページを紹介するLINK要素が自動的に埋め込まれることは、非常に宜しいはずです。ほかのメンバーのページへ移動しやすいでしょ?IEでは使えないけど。あってしかるべきです。betaグループならこんな感じ。

<LINK rel="INDEX" href="http://beta.g.hatena.ne.jp/diarylist">

たとえばチェスかなにかのグループがあって、興味のある人が検索エンジンで、とあるメンバーの日記を見つけますよね。「お、他にもこんなにチェス仲間がいるのかぁ、チェスでグループ作ってるのね、仲間にはいろうかなぁ、どれどれ、見てやれ。」とすぐにたどれるのがいいカンジです。

グループ内キーワード一覧のページへのLINK要素の自動出力

GLOSSARYとか使えませんかね。便利かもしれない。

<LINK rel="GLOSSARY" href="http://beta.g.hatena.ne.jp/keywordlist">

対応しているブラウザってあるのかなぁ。(笑)でもまぁ、ポインタとして存在していればグループ外の人が検索ページで迷い込んできた時に「このグループってこんなキーワードでお話ししているのかぁ。ふーうん。」とか興味持ってくれれば。

diarylistからキーワード一覧へのポインタがa要素で張られていても便利だと思われます。

■バックスラッシュエスケープによるXSS攻撃の回避について

スタイル属性内のEUCと日記本分のUTF-8がぶつかっている

はてなダイアリーXSS対策(http://d.hatena.ne.jp/keyword/%a4%cf%a4%c6%a4%ca%a5%c0%a5%a4%a5%a2%a5%ea%a1%bcXSS%c2%d0%ba%f6?kid=1003)より以下に引用します。

5:スタイルシート内の「\69\6D\70\6F\72\74」といった文字参照を、EUC文字列に置換します。

日記本文が、charset=UTF-8で記述されるのならば、外部スタイルシートならぬHTML中のスタイル属性にてEUC文字列で変換というお話はいささか都合が悪くはないのかと思案中です。

まず、上記XSS脆弱性対策条項にかかわらず、以下の記述は必須です。これは是非修正願いたいです。はてなダイアリーでもcharsetがEUC-JPになりますが同様に実現して頂きたく思います。

<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> 

HTML内部のスタイル属性でEUCを使う設定ならば、以下のような記述が考えられます。

<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<META http-equiv="Content-Style-Type" content="text/css; charset=EUC-JP"> 

しかしながら上記のようなcharsetの輻輳をブラウザに正確に解釈するように期待することはあまりお勧めできません。普通出来ないでしょう。HTMLの仕様上では問題はないのかもしれませんが。(htmllintでエラーを検知できませんでした)

suikanさんの「はてなダイアリー - ボストン脇見運転」(20040421)のコメント欄にて私が述べた記述、はてなダイアリーではセキュリティー対策の為にEUCを使っていたりするらしいですので(クロスサイトスクリプティング脆弱性)この辺も要注意点なんです、というのも上のような問題意識からです。

解決私案の思案中

まず、以下のmeta属性を追加します。

<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<META http-equiv="Content-Style-Type" content="text/css"> 

これで、日記編集画面や設定画面において使われるcharsetに矛盾がなくなります。

はてなダイアリーXSS対策の第5番目の条項については、バックスラッシュエスケープ(\69\6D\70\6F\72\74)をどのように取り扱うべきなのでしょうか。アルファベット, 数字, ハイフン, Unicodeの161-255までを対応で良いかもしれません。これで差し替えます。CSS1での識別子には影響が出にくいでしょう。バックスラッシュに続く最大4桁(CSS1)ないし、バックスラッシュに続く最大6桁(CSS2)の16進数による文字参照は、あきらめてもらいます。第5条項はこのような理解でよろしいかと。

関連するはてなダイアリーXSS対策の第7番目の条項については変更の必要がありませんが、私なら以下のように考えます。第5条項で、識別子関連で認められたバックスラッシュエスケープは既に変換済みですので残っていません。残りのバックスラッシュは例外を除き(オリジナルのXSS対策参照)、削除するのではなく、バックスラッシュ"\"が出現したら、これを、サニタイズして、"\  "とし、空白文字を2個付加してやることで、XSS脆弱性を回避します。といっても変更の必要はありません。私なら削除による方式は評価、対策のループを生むのでスループットがキツく、選択しない、という余談でにしかすぎません。

結局のところ、全体を通してみてダイアリーでの実装についてはperl的にはmetaを追加するぐらいで変更点がほとんどなかったりするのでしょうけれども。。まだ思案中ということで。仮にインターナショナリゼーションの観点から不充分だったらもったいないというかなんというか。

nobodynobody2004/04/24 16:19応答が遅れてすみません。こういう普通のコメントでよろしいでしょうか。

nobodynobody2004/04/24 16:21あと、おまけ。「\69\6D\70\6F\72\74」。

nobodynobody2004/04/24 16:24あとはUTF-8でペルシア語か何か書けばいいのかな。(むりっ!←燃焼系)

hoshikuzuhoshikuzu2004/04/24 16:39npbodyさん、ありがとうございます。!

matsunagamatsunaga2004/04/24 21:27アラビア語は書けましたよヽ(´ー`)ノでも左右の扱いがちょいと不完全(仕方ないのかな)

hoshikuzuhoshikuzu2004/04/24 21:33ビバ!インターナショナリゼーション。そうか字の方向の問題があるのですね。タグがあったような気がします。

hoshikuzuhoshikuzu2004/04/24 21:35http://www.ne.jp/asahi/minazuki/bakera/html/css/bidi

hoshikuzuhoshikuzu2004/04/24 21:36さっぱりわからない。。。とほほ