Perlコーディング初心者質問スレ Part 52
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/09/15(金) 14:01:51ID:gobry0n2【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
お勧めサイトは >>2-10
前スレ http://pc8.2ch.net/test/read.cgi/php/1153987463/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
0002nobodyさん
2006/09/15(金) 14:02:17ID:gobry0n2CGI: Common Gateway Interface part 13
http://pc8.2ch.net/test/read.cgi/php/1126436361/
【Perl,CGI】参考書籍 第三版
http://pc8.2ch.net/test/read.cgi/php/1030209573/
【Perl】ファイルロック(排他処理)について語ろう
http://pc8.2ch.net/test/read.cgi/php/1024795138/
★負荷軽減対策委員会(Perl、PHP)★
http://pc8.2ch.net/test/read.cgi/php/1034645635/
CGIに依存しないPerlの話題一般/Part2
http://pc8.2ch.net/test/read.cgi/php/1030548610/
★三 【 スクリプト改造工房 PART 9 】 ★三
http://pc8.2ch.net/test/read.cgi/php/1143834740/
【 スクリプト改造依頼スレ 】(丸投げ) part5
http://pc8.2ch.net/test/read.cgi/php/1141174205/
0003nobodyさん
2006/09/15(金) 14:02:58ID:gobry0n2[プログラミング自体の経験が無い奴はまずココを読め]
Perlプログラミング講座: http://www.site-cooler.com/kwl/perl/
[本]
リャマ: http://www.oreilly.co.jp/books/4873111269/
駱駝: http://www.oreilly.co.jp/books/4873110963/
Effective Perl: http://www.ascii.co.jp/books/detail/4-7561/4-7561-3057-7.html
クックブック: http://www.oreilly.co.jp/books/4873112028/
[オンラインマニュアル] (追加)
最新のドキュメント: http://search.cpan.org/~nwclark/perl-5.8.8/
perl5.8.xのドキュメント(一部): http://www.kt.rim.or.jp/~kbk/perl-5.8/
perl5.005_03 のドキュメント: http://www.kt.rim.or.jp/~kbk/perl5.005/
日本語ドキュメント検索: http://www.cpan.jp/search.cgi
perldoc.jp: http://www.perldoc.jp/
Perldoc.com: http://www.perldoc.com/
0004nobodyさん
2006/09/15(金) 14:05:07ID:gobry0n2[モジュール]
CPAN.com: http://search.cpan.org/
河馬屋二千年堂: http://homepage3.nifty.com/hippo2000/
[テクニック]
Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm
Perlのページ: http://homepage1.nifty.com/nomenclator/perl/
Perlの小技: http://homepage3.nifty.com/hippo2000/perltips/index.htm
[Perl5.8Unicodeメモ]
http://www.pure.ne.jp/~learner/program/Perl_unicode.html
http://www.namazu.org/~tsuchiya/perl/perl-5.8.html
http://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html
0005nobodyさん
2006/09/15(金) 14:16:42ID:???http://ex16.2ch.net/test/read.cgi/news4vip/1158297150/
0007nobodyさん
2006/09/15(金) 23:40:06ID:???女子大生拉致監禁事件!?12くらい
http://ex16.2ch.net/test/read.cgi/news4vip/1158323954/
「どう見ても釣りだろ」
というと顔を真っ赤にしてレスしてくるので注意!!!
0008nobodyさん
2006/09/16(土) 11:00:05ID:vjnDDSY/@lines = sort @lines;
print "@lines\n";
がソートされたものを表示して
@lines = sort chomp(@lines = <STDIN>);
print "@lines\n";
が要素の個数を表示するのは
前者は配列をダブルクォーテーションの中で展開していて
後者はリストをスカラーコンテキストで使っているから
という解釈で正しいでしょうか?
0010nobodyさん
2006/09/16(土) 11:37:13ID:vjnDDSY/ありがとうございます。
0011nobodyさん
2006/09/16(土) 22:23:36ID:???chomp(@list = sort <STDIN>);
0012nobodyさん
2006/09/18(月) 19:19:34ID:???その発想は無かった。
0013nobodyさん
2006/09/18(月) 22:14:51ID:???普段はあんまり意識しないけど、LISTとARRAYの違いは重要。
0014nobodyさん
2006/09/18(月) 22:14:58ID:???STDIN を直接ソートしてるわけじゃなくて、
リストコンテキストで評価することでファイルの中身をソートしてるだけ。
0015nobodyさん
2006/09/18(月) 22:32:44ID:???そういう動作の仕方を知ってると色々応用できるし参考になるよ。
0016nobodyさん
2006/09/19(火) 06:52:45ID:???例えば、次のようにユーザ入力の値をダブルクォート内に代入したとします。
この時エスケープする文字列は、 & と < と > と " と ' です。
<a href="http://$hoge">
バイナリエディタで解析した " (ダブルクォート) の 16進表記は、"22" です。
ここで、$hoge に バイナリレベルで "82" をいれてみるとどうなるかやってみました。(バイナリファイルを一般のテキストエディタで表示したときの、"・"(半角) と表示されるあれです。)
それを出力して、IE と Firefox と Opera で表示したところ、 "82 22" で 1つの不正な文字 "・"(全角) として表示され、ダブルクォートが消えうせていました。
当然、掲示板のURL欄にこういう文字列をいれられたら、それ以降のデータがダブルクォート内のものと扱われますし、
その後の投稿内容の一部が " (ダブルクォート) 外にすることも可能で、"onload" イベントなどを使った、XSS攻撃も可能になるわけです。
大手CGI配布サイトのCGIで実験してみたところ、なんと実際にXSS攻撃が可能でした。
つまり、下記の条件を満たしてるPerlには脆弱性があることになります。
・文字コードとしてShift_JISを使っている。
・ダブルクォート内に正規表現などで入力内容を規制していない文字列が代入される。
(所謂、< とか > とか " のサニタイズをしていてもこの攻撃は可能。)
・Shift_JIS に存在しないコードを含む文字列が存在しないかの確認をしてない。
001716
2006/09/19(火) 06:56:55ID:???「"(ダブルクォート) は 1バイト文字だけど、ユーザが送る文字列の最後に不正な1バイトコードをいれることで、
その1バイトコードと、ダブルクォートが合体した、不正な文字化けした2バイトデータと扱われ、ダブルクォートが消失してしまう(文字化けした・になる)」ということです。
こういった「文字化けを悪用した攻撃」に関する解説サイトはなかなか見つからず困っています。(上の情報は自分で検証した結果です。)
これの対処についていくつか質問があります。
・ユーザから送られてきた文字列が、Shift_JIS として正当であることを確認する、モジュールなどはないでしょうか?
それができたら、文字化けを悪用した攻撃は防げるかと思います。
・EUC-JP や UFT-8 ではこのような問題は発生しないのでしょうか?
参考: http://www2d.biglobe.ne.jp/~msyk/cgi-bin/charcode/bbs.cgi?past=1&c=r&n=82
・もし、EUC-JP などなら問題が生じないのであれば、スクリプトの文字コードの変換をやろうかと思います。
Shift_JIS の駄目文字を "\" でエスケープしているコードを自動的に変換するソフトはないでしょうか?
ご教示お願い致します。
001816
2006/09/19(火) 06:58:25ID:???実体参照化される場合があるようです。
<a href=”http://$hoge”> です。
0019nobodyさん
2006/09/19(火) 12:24:14ID:???「このサイトはテキストブラウザ専用です」と書いておけばおk。
完全に排除したいなら最後に半角スペースを入れるくらいしかないと思う。
なぜならクライアントはページ製作者の指定したエンコードで表示するとは限らないから。
0020nobodyさん
2006/09/19(火) 12:38:09ID:???s/=/?/g;
>Shift_JIS として正当であることを確認
正規表現
0021nobodyさん
2006/09/19(火) 12:39:43ID:???s/=/=/g;
0022nobodyさん
2006/09/19(火) 15:40:09ID:???てーか普通URLに \x7f 以上の文字あるときはそれ全部エスケープするだろ?
あのくだらない日本語ドメインかなんかですか?(^ω^;
0023nobodyさん
2006/09/19(火) 17:02:06ID:???> ・ユーザから送られてきた文字列が、Shift_JIS として正当であることを確認する、モジュールなどはないでしょうか?
正規表現一行で実現できるよ。
0024nobodyさん
2006/09/19(火) 18:25:23ID:???AでかつBでかつCの場合、のような全部andというわけではなく
AでかつBかCの場合、という混合の書き方はありますでしょうか?
現在は
if($foo eq 'A'){
if($bar eq 'B' or $bench eq 'C'){
print $foobar;
}
}
みたいに入れ子にしてます。
0025nobodyさん
2006/09/19(火) 18:27:03ID:tgpbfNw0($foo eq 'A') && ($bar eq 'B' or $bench eq 'C')
0027nobodyさん
2006/09/19(火) 18:39:53ID:LgUjbLc5http://www.technorati.jp/home.html
テクノラティで任豚が発狂中〜〜www
ここの左側で「踊っているマリオ」のところが任豚ブログだ。
任豚パワーは凄まじい〜〜。
0029nobodyさん
2006/09/19(火) 20:10:20ID:???$str = qr/^([\n\x20-\x7e\xa1-\xdf]|[\x81-\x9f\xe0-\xfc][\x40-\x7e\x80-\xfc])*$/;
実際に使ってるのはこんな感じ。
0031nobodyさん
2006/09/21(木) 03:42:14ID:???モジュール・ライブラリがあれば教えていただきたい次第
です。
CGI::SessionやWalrus::Session::Lite等が検索で出てきま
すが、環境によって動作する・しないというものもあるみた
いなので一番安全で手軽に導入できるものがあれば
有り難いです。
0032nobodyさん
2006/09/21(木) 06:44:43ID:31FpoYel■ このスレッドは過去ログ倉庫に格納されています