KENT-WEB サポートコーナー 過去ログ [ 0070 ]


記事No: 11518
投稿日: 2013/03/02(Sat) 23:27:41
タイトルYY-BOARDのクロスサイト・スクリプティングの脆弱性対策
ID情報: hotachan
投稿者: ほたる
URLhttp://www.happytalkbbs.net/

こんにちは。いつもお世話になっています。YY-BOARDのVersion 6.3以前にクロスサイト・スクリプティングの脆弱性というものがあるということなので、対策をしたいのですが、私の所では、CSSやHTMLを大きく変えて増量してしまっており、簡単に最新版へ移行するのは無理のようです。

もしできましたら、どこをどう変えたらクロスサイト・スクリプティングの脆弱性への対策ができるのか教えていただけるとありがたいです。使っているバージョンは、Version 6.3です。Perlはよくわかりませんが、言われたとおりに書き加える程度ならできると思います。

もし難しいようでしたら、Version 6.4を再度公開していただけるとありがたいです。

お手数をおかけしますが、よろしくお願いいたします。


記事No: 11520
投稿日: 2013/03/03(Sun) 10:16:46
タイトルRe: YY-BOARDのクロスサイト・スクリプティングの脆弱性対策
ID情報: hamel
投稿者: Hamel
URLhttp://drc3.news-site.net/script1/product.html

> もし難しいようでしたら、Version 6.4を再度公開していただけるとありがたいです。

現時点での最新バージョンは「Ver: 8.12」なのではないでしょうか?


記事No: 11527
投稿日: 2013/03/03(Sun) 11:53:03
タイトルRe^2: YY-BOARDのクロスサイト・スクリプティングの脆弱性対策
ID情報: hotachan
投稿者: ほたる

> 現時点での最新バージョンは「Ver: 8.12」なのではないでしょうか?

存じています。ただ、Version 6系とVersion 8系では、仕様が大きく異なる様で、私が手を加えたVersion 6.3の機能をそのまま維持して、Version 8.12に移行するのは、自分の場合、ほとんど不可能だという気がします。Version 6.3のCSSとHTMLを主に修正したのですが、毎日ほぼ一日中作業して、33日間かかりました。自分の能力が未熟なゆえ、改造するとなると、どうしてもこれぐらいの時間がかかります。HTMLはよく分かっていて、CSSがおおざっぱに分かる程度で、プログラミングはほとんどわかりません。

Version 8系はVersion 6系よりも私の目には複雑に見えますので、もし同じ事ができたとしても少なくともVersion 6の時よりも時間がかかりそうです。仕事を持つ身としては、これはかなり厳しいです。

書き直したり、書き加えたりするところが分かれば、20〜30時間で終わるかもしれないと思っています。Version 6.4を公開していただければ、全ファイルを1行1行比較して書き写しますので、それよりも時間がかかるとは思いますが、50時間〜100時間ぐらいでやれそうな気がします。


記事No: 11533
投稿日: 2013/03/03(Sun) 19:32:36
タイトルRe^3: YY-BOARDのクロスサイト・スクリプティングの脆弱性対策
ID情報: kent
投稿者: KENT

> > 現時点での最新バージョンは「Ver: 8.12」なのではないでしょうか?
>
> 存じています。ただ、Version 6系とVersion 8系では、仕様が大きく異なる様で、私が手を加えたVersion 6.3の機能をそのまま維持して、Version 8.12に移行するのは、自分の場合、ほとんど不可能だという気がします。Version 6.3のCSSとHTMLを主に修正したのですが、毎日ほぼ一日中作業して、33日間かかりました。自分の能力が未熟なゆえ、改造するとなると、どうしてもこれぐらいの時間がかかります。HTMLはよく分かっていて、CSSがおおざっぱに分かる程度で、プログラミングはほとんどわかりません。
>
> Version 8系はVersion 6系よりも私の目には複雑に見えますので、もし同じ事ができたとしても少なくともVersion 6の時よりも時間がかかりそうです。仕事を持つ身としては、これはかなり厳しいです。
>
> 書き直したり、書き加えたりするところが分かれば、20〜30時間で終わるかもしれないと思っています。Version 6.4を公開していただければ、全ファイルを1行1行比較して書き写しますので、それよりも時間がかかるとは思いますが、50時間〜100時間ぐらいでやれそうな気がします。

修正箇所は次の箇所でよかったかと思います。

regist,cgi 441行目

■変更前
# 名前とコメントは必須
if ($in{'name'} eq "") { &error("名前が入力されていません"); }
if ($in{'comment'} eq "") { &error("コメントが入力されていません"); }
if ($in_email && $in{'email'} !~ /^[\w\.\-]+\@[\w\.\-]+\.[a-zA-Z]{2,6}$/) {
&error("Eメールの入力内容が正しくありません");
}

■変更後
# 名前とコメントは必須
if ($in{'name'} eq "") { &error("名前が入力されていません"); }
if ($in{'comment'} eq "") { &error("コメントが入力されていません"); }
if ($in_email && $in{'email'} !~ /^[\w\.\-]+\@[\w\.\-]+\.[a-zA-Z]{2,6}$/) {
&error("Eメールの入力内容が正しくありません");
}
if ($in{url} && $in{url} !~ /^https?:\/\/[\w-.!~*'();\/?:\@&=+\$,%#]+$/) {
&error("URL情報が不正です");
}


記事No: 11534
投稿日: 2013/03/03(Sun) 21:15:22
タイトルRe^4: YY-BOARDのクロスサイト・スクリプティングの脆弱性対策
ID情報: hotachan
投稿者: ほたる

> 修正箇所は次の箇所でよかったかと思います。
>
> regist,cgi 441行目
>
> ■変更前
> # 名前とコメントは必須
> if ($in{'name'} eq "") { &error("名前が入力されていません"); }
> if ($in{'comment'} eq "") { &error("コメントが入力されていません"); }
> if ($in_email && $in{'email'} !~ /^[\w\.\-]+\@[\w\.\-]+\.[a-zA-Z]{2,6}$/) {
> &error("Eメールの入力内容が正しくありません");
> }
>
> ■変更後
> # 名前とコメントは必須
> if ($in{'name'} eq "") { &error("名前が入力されていません"); }
> if ($in{'comment'} eq "") { &error("コメントが入力されていません"); }
> if ($in_email && $in{'email'} !~ /^[\w\.\-]+\@[\w\.\-]+\.[a-zA-Z]{2,6}$/) {
> &error("Eメールの入力内容が正しくありません");
> }
> if ($in{url} && $in{url} !~ /^https?:\/\/[\w-.!~*'();\/?:\@&=+\$,%#]+$/) {
> &error("URL情報が不正です");
> }

早速ご回答頂き、ありがとうございます。

やってみましたが、投稿フォームのURL欄にデフォルトの「http://」が入ったままだと、
「URL情報が不正です」というエラーメッセージが出てしまいます。
普通のURLを入れた場合と、何も入っていない場合とでは、
正常に投稿できました。

デフォルトの「http://」が入ったままで、エラーが出ないようにはできないでしょうか?


記事No: 11535
投稿日: 2013/03/04(Mon) 08:54:11
タイトルRe^5: YY-BOARDのクロスサイト・スクリプティングの脆弱性対策
ID情報: kent
投稿者: KENT

> > 修正箇所は次の箇所でよかったかと思います。
> >
> > regist,cgi 441行目
> >
> > ■変更前
> > # 名前とコメントは必須
> > if ($in{'name'} eq "") { &error("名前が入力されていません"); }
> > if ($in{'comment'} eq "") { &error("コメントが入力されていません"); }
> > if ($in_email && $in{'email'} !~ /^[\w\.\-]+\@[\w\.\-]+\.[a-zA-Z]{2,6}$/) {
> > &error("Eメールの入力内容が正しくありません");
> > }
> >
> > ■変更後
> > # 名前とコメントは必須
> > if ($in{'name'} eq "") { &error("名前が入力されていません"); }
> > if ($in{'comment'} eq "") { &error("コメントが入力されていません"); }
> > if ($in_email && $in{'email'} !~ /^[\w\.\-]+\@[\w\.\-]+\.[a-zA-Z]{2,6}$/) {
> > &error("Eメールの入力内容が正しくありません");
> > }
> > if ($in{url} && $in{url} !~ /^https?:\/\/[\w-.!~*'();\/?:\@&=+\$,%#]+$/) {
> > &error("URL情報が不正です");
> > }
>
> 早速ご回答頂き、ありがとうございます。
>
> やってみましたが、投稿フォームのURL欄にデフォルトの「http://」が入ったままだと、
> 「URL情報が不正です」というエラーメッセージが出てしまいます。
> 普通のURLを入れた場合と、何も入っていない場合とでは、
> 正常に投稿できました。
>
> デフォルトの「http://」が入ったままで、エラーが出ないようにはできないでしょうか?

直前に以下の一行を追加してみてください。

if ($in{'url'} eq "http://") { $in{'url'} = ""; }


記事No: 11536
投稿日: 2013/03/04(Mon) 12:58:14
タイトルRe^6: YY-BOARDのクロスサイト・スクリプティングの脆弱性対策
ID情報: hotachan
投稿者: ほたる

> 直前に以下の一行を追加してみてください。
>
> if ($in{'url'} eq "http://") { $in{'url'} = ""; }

少し下の468行目から470行目に下記の記述があります。

# URL
if ($in{'url'} eq "http://") { $in{'url'} = ""; }
}

中身が同じようなので、
これを追加部分の上に持ってくるか、
または、追加部分をこの下に持ってくるかでも
良いでしょうか?


記事No: 11537
投稿日: 2013/03/04(Mon) 20:01:39
タイトルRe^7: YY-BOARDのクロスサイト・スクリプティングの脆弱性対策
ID情報: kent
投稿者: KENT

> > 直前に以下の一行を追加してみてください。
> >
> > if ($in{'url'} eq "http://") { $in{'url'} = ""; }
>
> 少し下の468行目から470行目に下記の記述があります。
>
> # URL
> if ($in{'url'} eq "http://") { $in{'url'} = ""; }
> }
>
> 中身が同じようなので、
> これを追加部分の上に持ってくるか、
> または、追加部分をこの下に持ってくるかでも
> 良いでしょうか?

はい、それで試してみてください。


記事No: 11538
投稿日: 2013/03/05(Tue) 01:50:39
タイトルRe^8: YY-BOARDのクロスサイト・スクリプティングの脆弱性対策
ID情報: hotachan
投稿者: ほたる

> > 少し下の468行目から470行目に下記の記述があります。
> >
> > # URL
> > if ($in{'url'} eq "http://") { $in{'url'} = ""; }
> > }
> >
> > 中身が同じようなので、
> > これを追加部分の上に持ってくるか、
> > または、追加部分をこの下に持ってくるかでも
> > 良いでしょうか?
>
> はい、それで試してみてください。

下記のようにやってみましたが、うまく動作しました。
他の方のためにわかりやすく書いておきます。


【変更前】

@col = split(/\s+/, $color);
if ($in{'color'} =~ /\D/ || $in{'color'} < 0 || $in{'color'} > @col) {
&error("文字色情報が不正です");
}

# URL
if ($in{'url'} eq "http://") { $in{'url'} = ""; }
}



【変更後】

@col = split(/\s+/, $color);
if ($in{'color'} =~ /\D/ || $in{'color'} < 0 || $in{'color'} > @col) {
&error("文字色情報が不正です");
}

# URL
if ($in{'url'} eq "http://") { $in{'url'} = ""; }

if ($in{url} && $in{url} !~ /^https?:\/\/[\w-.!~*'();\/?:\@&=+\$,%#]+$/) {
&error("URL情報が不正です");
}

}


以上ですが、おかげさまで簡単に修正ができ、大変助かりました。
これで一安心です。ありがとうございました。


[検索ページ] [掲示板]