ソフトンハウス・トップへソフトンハウス・写真の旅へソフトンハウス・家族だワンにゃんへソフトンハウスTOP 
さかどん
テストブログ
使ってみるテスト。
Calendar
<<5月>>
...1234
567891011
12131415161718
19202122232425
262728293031
Category
バグメモ(1)
ほげ(1)
脆弱性メモ(5)
→リスト表示する
Archive
アーカイブはありません。
Parts
パーツはありません。
Latest Blog
jotf1967
5月5日(日)...
kazu
一件落着
jotf1967
5月4日(土)...
jotf1967
5月3日(金)...
jotf1967
5月2日(木)...
jotf1967
5月1日(水)...
jotf1967
4月30日(火)...
jotf1967
4月29日(月)...
jotf1967
4月28日(日)...
jotf1967
4月27日(土)...
jotf1967
4月26日(金)...
Messages
CAPTCHAは機能して...
HTML記述の認可はどの...
バグメモ
アップロードの怖さ...
対策されてから書くと言っ...
脆弱性メモ
登録時と変わってた...
→リスト表示する
[最新順表示]  1 件
 [リストを表示] 1頁3件 1/1(1件)
2008/12/07 15:27:22 プライベート♪
脆弱性メモ
HTML記述の認可はどの程度まで許すか
ブログを書く際に、様々なHTMLを利用することにより表現の幅が広がります。

さて、ここでどのようなHTMLを認可すると良いか、簡単に検討してみましょう。
HTMLには、大きく分けて3種類あります。

  1. インライン要素

  2. ブロック要素

  3. その他の要素

1番目のインライン要素とは、主に文字列の意味を定義付けする際に仕様する要素です。この要素を駆使することによって、単なる文字列が意味のある文章へと変化します。主にHTMLで良く使われるのはインライン要素となります。
ブロック要素は、その名の通りで主に段落や文章全体のセクションを分ける為に使用します。デザインのためにも使われますが、デザインのために要素を使うのは意図されていない使われ方です。
その他は、強制改行要素などの空要素、インライン要素だったりブロック要素になったりする変化要素なども有ります。
詳しくは用語の説明を参照。

ここで今回意識するのは、脆弱性を産まない要素を探す事です。
例えば、インライン要素でも意味付けだけの要素であるem要素やq要素cite要素、code要素、samp要素などは許可しても差し支えは無いでしょう。
ブロック要素でも、p要素やbr要素などあります。基本的な部分は許可してもまあ大丈夫でしょうが、これらは記述表現で代用が出来ます。
例えば段落は、投稿内容記入欄で1行の前後に改行が有ればそれを1つの段落と認識してp要素で囲むのが通常だと思われますし、強制改行であるbr要素も、イコールただの改行と捉えても問題はありません。
むしろ、br要素などは許可を与えるとbrを1行に30個書けば30行改行されるという書きやすさという脆弱性(嫌がらせとも言うか)
があります。出来れば只の改行をbrと見なして解釈し、連続改行の数も制限した方が良いかと思われます。

さて、問題が無い要素を出すのは難しいですが、もうハッキリとダメと言える要素を出すのは簡単です。
まずは要素外に記述する要素、html要素や要素、要素(つまり2個以上書く)、link要素要素などは要素の中に記述することは論外なので、エラー判定することが出来ます。html要素や要素が2個以上あるとブラウザによってはレンダリングがずれる場合も有ります。
また、要素に記述出来るが是非エラー判定して頂きたいものとしては、

  • java要素

  • 要素、param要素、要素

  • フレーム関連(要素など)全部

  • フォーム関連(form要素や要素など)全部(と言ってもlegend要素やlabel要素は大丈夫です)

あたりでしょうか。特にjava要素は勝手にjavaを動かされる危険性、要素などは勝手にFlashやexeファイルまでもを読み込まれる危険性、では勝手にJavaアプレットなどが、フレームでは要素をつかって他の外部ページを読み込ませる事ができる危険性、フォーム関連では個人情報を引き出される可能性(を使えばブラウザが記入欄に記載済みで、あとは投稿ボタンを間違って押して貰えば個人情報が入手可能に!)があります。

もっと厳密な判定判断が出来れば、Flashを読み込んだりすることで幅を広げることも可能ですが、直接HTMLでそれをやらせるのは現実的ではありません。
出来れば、Flash等を記事へ貼る際には独自記法を採用し、HTMLで必要以上な事をさせない、許さない事が基本です。

また、要素だけ語っても意味がありません。その要素自体がまったくの無害であっても、属性値が悪意を持つ場合があります。
その中でも、style属性は諸刃の刃です。参考までに以下にstyle属性でフォントサイズを50pxに、文字色を赤にした文字列を用意しました。


どぎゃーん!


このように、表現次第では無害な使われ方ですが、悪意を持ったことも出来るのは確かで、200pxあたりの文字列を並べられても困りどころです。
しかし、表現の幅が広がるとても便利な属性なので、厳密に判断できる処理を施し、解禁すると良いのではないでしょうか。はてなダイアリーの例が良い例です。
その他にも、脆弱性、危険性、迷惑性を含めた属性は色々とあります。が、そろそろ長ったらしく飽きてきたのでこの辺にしときます。

あと、特筆事項としては要素、span要素は、意味を持たない要素(要素は文章のセクションを分けるとかに使いますが)なので、基本的にダメという形にしておいたほうが良いかもしれません。この辺はポリシーに沿って許すかどうかを決めると良いかと思います。
また、フォント要素というものもあり、意味を持たない要素のことを指します。例えばfont要素、i要素、b要素、center要素などです。これらも意味を成さない要素なので除外すべき(現に最新のHTMLでは非推奨)ですが、初心者には扱いやすいので許可しておいても差し支えないのと思います。

そろそろ飽きたのでこの辺にしておこう。
まあHTMLは様々な要素がまだまだたくさんあります。一つ一つ精査して行くのが良いかとおもいます。XHTML リファレンスなどを見るとおおざっぱにHTMLの要素について分かるのではないかとおもいます。
XHTMLとHTMLの違いなどは、ここでは特に気にしなくても良いと思いますので説明しません。

ああ、長かった。
TB(0) | 記事URL |コメント |通報
Posted by お疲れぷろぐらま (2008/12/07 16:26:39) 通報
なるほどなるほど
ありがとう。
キーワードはチェックはかけられるけど、
要素判定はしていなかったなぁ。
span は許可したいところなので、はてな程度の要素進呈が可能なレベルまで上げときます。
問題になりそうなのは判定に入れておきました。
Posted by お疲れぷろぐらま (2008/12/09 00:16:35) 通報
ところでさ
ここ見てアタックしてくる輩がいるので、
ちょっと控えといてくれ。
一応対策はしているけど、アドバイスも欲しいので、
メニューの中に板作っとく。
Posted by お疲れぷろぐらま (2009/01/05 01:44:49) 通報
板と言ったけど。
タグ解析プログラムを実装する事にした。
1月中旬にはクリアできるかな。
現在はタグ消しでしてるけど、
許可タグのみ通過できるよう制作しているよ。
画面TOPへ [最新順表示]  1 件
お名前
URL
タイトル
コメント
※この番号を下記に「半角数値」で入力してください。
画像認証
  コメントの投稿時には画像認証に表示されている番号を入力してください。
  投稿記事が削除された場合は、同時にコメントも削除されますのでご了承ください。
  ブログの管理者が承認しないとコメントが反映されない場合もあります。
  宣伝を含むコメントは予告せずに削除いたしますのでご了承ください。
  その他、ソフトンハウス運営チームが予告せずに削除する場合があります。
  アダルト関係のリンクの掲載は利用規約違反とみなします。
  公序良俗に反するコメントは不正アクセスとして通報させて頂きます。
Profile
さかどん
性別男性
年齢19歳
誕生4月
星座おひつじ座
血液B型
身長171cm
体型変体
職業学生
地域つくば市
性格変態
趣味特になし
チャームキモイとこ
自己紹介
人類
Parts
パーツはありません。
Favorite
お気に入りはありません。
Parts
パーツはありません。
今日
今月
累計
掲載情報などの無断転用・転載を禁止します。著作権は 株式会社ソフトウエア開発 に属します。
本サイトに関するお問い合わせ、広告等の掲載依頼は ソフトンハウス運営チーム までご連絡ください。