ホームに戻る > スレッド一覧 > 記事閲覧
[59] タイトルに入れた\nが<br>に書き換えられてしまいました
日時: 2012/03/01 21:20
名前: ひもと◆JYsqpXk.I. ID:gs8Dvtus

コピーです

結構大きいプログラムのミスを発見した

KENTにて配布されてるWebpatio
http://www.kent-web.com/

結構使ってるサイトは多いと思うんだけども


改行対策に関して結構重大なミスを発見しました

何故かタイトルに入れた\nが<br>に書き換えられてしまいました


文中の\nが<br>に書き換えされるのはまだ分かる物の何故タイトルのが<br>に書き換えされてるかは意味不明です

単なるミスだとは思いますが\nは文字数にカウントされないので無限に<br>を挿入でき危険なのでやっぱり対策した方がいいと思う


対策方法についてはPerl使いでは無いのでよく分からないので後日書くかもとしておく


ってまぁ、改行入れてPOSTする荒らしなんてそうそう居ないとは思うんだけどね
メンテ

Page: 1 | 2 | 全部表示 スレッド一覧 新規スレッド作成

本文以外は改行コードは除去してもいいかもしれませんね ( No.4 )
日時: 2012/03/06 16:29
名前: きりしま◆.CzKQna1OU ID:bLKues.2 メールを送信する

タイトル欄は
inputフィールドで、
最大文字数も指定してあるので、
ちゃんとしたブラウザなら、変なことは起きないはずですし、
もしそうなっても、タイトルが改行されて表示されるだけです。

また、受け取った改行は<br>に置換されますので、
スレッドのデータが破損したりすることはなく、
動作上はさほど問題はないと思われます。

ですが、
一部のブラウザは、
inputフィールドであるにもかかわらず、
改行コードを入力して送信できてしまうようですので、
レイアウトが崩れるのを防ぐためには、
本文以外の受け取ったデータは、
改行コードを<br>に置換するのではなく、
除去するのがいいかと思います。

init.cgiの
L.743付近と、L.790付近の2ヵ所に、

# プレビュー時は改行を置換しない

というコメント行がありますので、それぞれその前に、

if ($key ne "comment") {
$val =~ s/\r//g;
$val =~ s/\n//g;
}

と入れたらどうでしようか。

現在、テスト掲示板を上記仕様にして、
あえてタイトルを<textarea>にしてあります。
メンテ

Page: 1 | 2 | 全部表示 スレッド一覧 新規スレッド作成

題名 タイトルは次の画面で設定してください
名前  「名前#任意の文字列」でトリップ生成
E-Mail 入力すると メールを送信する からメールを受け取れます(アドレス非表示)
URL
パスワード (記事メンテ時に使用)
投稿キー (投稿時 投稿キー を入力してください)
コメント

   クッキー保存