| | | | | | | | | | | << | 12月 | >> | 日 | 月 | 火 | 水 | 木 | 金 | 土 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | /TR> 8 | 9 | 10 | 11 | 12 | 13 | 14 | /TR> 15 | 16 | 17 | 18 | 19 | 20 | 21 | /TR> 22 | 23 | 24 | 25 | 26 | 27 | 28 | /TR> 29 | 30 | 31 | ・ | ・ | ・ | ・ |
| |
| |
| |
| | | | | | | | | | | | | | | | | 2009/10/04 10:18:04 プライベート♪ | | | 脆弱性メモ | | | CAPTCHAは機能しているか? | |
| |
| | |
気になったので久々にログインしてみた。
ユーザ新規登録に、CAPTCHAっぽいのがあるけれども、これはこれはとても解析しやすいCAPTCHAだなあと思った。
まず、画像1つ1つが切り離されてる。これだと、解析する画素数が少ないので、まあ分布的に何の文字か解析しやすくなってしまう。 さらに、HTML上からの呼び出しが普通にimg要素による表現のため、ファイル名から用意に分かってしまう。
http://softonhouse.jp/images/user/C1.jpg http://softonhouse.jp/images/user/C2.jpg http://softonhouse.jp/images/user/C3.jpg http://softonhouse.jp/images/user/C4.jpg http://softonhouse.jp/images/user/C5.jpg http://softonhouse.jp/images/user/C6.jpg http://softonhouse.jp/images/user/C7.jpg http://softonhouse.jp/images/user/C8.jpg http://softonhouse.jp/images/user/C9.jpg http://softonhouse.jp/images/user/C0.jpg
しかも、模様がランダム生成とかではなく1つだけなので、より解析する負担が減る。つまり、その画像がどんな文字か分かったらOKでござる的。 すなわち、これは人間が素直に画像を見て解読するより、何らかのプログラムが処理したほうが早いですね。
意味が無いので、取っ払った方が良いです。もしくは、世の中にはCAPTCHAのAPIがあるんでそれを利用するのも手です。 あとは、OpenIDとかそういうのも良いかと思います。
むしろ、なぞなぞ認証とかどうですかね。そっちの方がまともなCAPTCHAより実装楽かもしれません。
| | | |
| |
| | | | | Posted by お疲れぷろぐらま (2009/10/04 17:32:58) 通報 | | なるほどねぇ。 | | アドバイスの線で修正してみるね。 なぞなぞ認証いいね(笑)
| |
| |
| | | | | | | | 2008/12/07 15:27:22 プライベート♪ | | | 脆弱性メモ | | | HTML記述の認可はどの程度まで許すか | |
| |
| | |
ブログを書く際に、様々なHTMLを利用することにより表現の幅が広がります。
さて、ここでどのようなHTMLを認可すると良いか、簡単に検討してみましょう。 HTMLには、大きく分けて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の違いなどは、ここでは特に気にしなくても良いと思いますので説明しません。
ああ、長かった。
| | |
| |
| | | | | 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月中旬にはクリアできるかな。 現在はタグ消しでしてるけど、 許可タグのみ通過できるよう制作しているよ。 | |
| |
| | | | | | | | 2008/12/07 15:06:50 プライベート♪ | | | バグメモ | | | バグメモ | |
| |
| | |
バグのメモなので簡単に書き留めておくコーナー。気づいた時にテキトーに書く。
自分の詳しいプロフィール画面で、どうやら記入した文字列が別な所へ継承されるようで…
上記リンク先の例だと、私の秘密 に書いたものが、他の書いていないはずの欄へ継承されていることが分かると思います。 コレを応用するととんでもない事になるので辞めておくことにする。
| | |
| |
| | | | | Posted by お疲れぷろぐらま (2008/12/07 15:28:09) 通報 | | おお | | なんとそんなバグが・・・w
| |
| | | | Posted by お疲れぷろぐらま (2008/12/07 15:34:38) 通報 | | で、 | | その不具合が発生する手順を教えて欲しいのだが・・ | |
| | | | Posted by さかどん (2008/12/07 16:13:14) 通報 | | 1. 私の秘密 の記入欄に何か記入 2. 設定するボタンをクリック 3. 再現完了 | |
| | | | Posted by お疲れぷろぐらま (2008/12/07 16:23:58) 通報 | | そっかぁ | | 新規で登録したら再現しなかったんだよね。 何かあるんだね・・・コード追ってみるよ。
| |
| | | | Posted by お疲れぷろぐらま (2008/12/07 16:51:26) 通報 | | 修正完了 | | データが継承されるのは表示するときだったようだ。 最初の詳細プロフィールのラストを入れて、 別の画面の詳細データを入れないとレコードが存在しないために 前回のデータが表示されてしまう。 初期化時のバグだった。 | |
| | | | ※このメッセージには続きがあります。 ※全文を表示するにはここをクリックしてください。 | | | |
| | | | | | | さかどん | | | | | | | 身長 | 171cm | | | 体型 | 変体 | | | 職業 | 学生 | | | 地域 | つくば市 | | | 性格 | 変態 | | | 趣味 | 特になし | | | チャーム | キモイとこ | | | | 自己紹介 | |
| 人類 | |
| | | |
|
| |
| |
|
|
|