トップページ⇒php
26コメント10KB

初心者がソースを貼って上級者が採点するスレッド

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん02/12/29 19:11ID:???
初心者がプログラムのソースを貼り付けて、
それを上級者が採点、手直しをし、初心者のスキルアップを手助けするという趣旨のスレです。
ソースはコピペでもいいですが、長い場合は、あぷろだを使ったほうがいいかも。
あぷろだ:http://www.patipati.com/upload/upload.cgi

※必ず採点してもらえるわけではありません。気長に待ちましょう。
※採点してくれる人への感謝の気持ちをもちましょう。
0002nobodyさん02/12/29 19:19ID:T68uzibZ
perl初めて1週間の初心者です。
日記サイト更新のためのスクリプトを書いてみたのですが、
パスワードのセキュリティなどがかなりヘタレだと自覚しています。
以下のスクリプトでファイルに書き込み、
read.cgiというファイルを読み込むCGIでdatを読み込んでいます。

#!/usr/local/bin/perl

require "./cgi-lib.pl";
require "./jcode.pl";
ReadParse();

#変数に入れる
$comment = $in{"comment"};
$pass = $in{"pass"};
jcode::convert(\$name,"euc");
jcode::convert(\$comment,"euc");

$datefile = "./date/visitor.dat";
$tempfile = "./date/temp";

umask 0;
0003nobodyさん02/12/29 19:20ID:T68uzibZ

if ( $pass eq "012345" ){

#ファイルをオープン

open(TMP,">> $tempfile");
print TMP "<table border=\"1\" width=\"555\" bordercolor=\"#E9EAFE\" bordercolorlight=\"#FFFFFF\" bgcolor=\"#FFFFFF\"><tr><td>$comment</td></tr></table><br>\n";

open(DATE, "< $datefile");
while( <DATE> ){
print TMP $_;
}
close(DATE);
close(TMP);

rename($tempfile,$datefile);

print "Content-type: text/html\n\n";
print "<HTML>\n<HEAD>\n<TITLE>更新</TITLE>\n</HEAD>\n";
print "<BODY>\n<a href=\"./read.cgi\">更新されました</a>\n";

}
else{
print "Content-type: text/html\n\n";
print "<HTML>\n<HEAD>\n<TITLE>エラー</TITLE>\n</HEAD>\n";
print "<BODY>\n<a href=\"./list.html\">パスワードが違います!</a>\n";
}
print "</BODY>\n</HTML>";

__END__
0004nobodyさん02/12/29 19:43ID:???
システムコールの戻り値は必ずチェックせよ
システムコールの戻り値は必ずチェックせよ
システムコールの戻り値は必ずチェックせよ
0005nobodyさん02/12/29 19:47ID:???
>>4
青ラクダ本 p.630ですか?
0006nobodyさん02/12/29 19:50ID:???
>>3
PASSはcryptでハッシュ化させるほうがいい
00072 ◆j0Oon93KwY 02/12/29 20:00ID:???
>>4
調べてやってみます・・・。
open (TMP , "$tempfile") or print "can't open tempfile $!";
みたいな感じですか?
>>6
$crypted = crypt("012345" ,"sa");
if (crypted($pass,$crypted) ne $crypted{
print "パスワードが違います!";
}

__

こんな感じでよろしいでしょうか?
0008nobodyさん02/12/29 20:05ID:???
>>7
いや 別CGI等でcryptしたやつと一致するかどうか
生パスワードは一切CGIに記述しない
例えば sa でハッシュ化したやつがsaj0Oon93KwY だったら

&error("パスワードおかしくない?") if crypt($pass,sa) ne "saj0Oon93KwY")
こんな感じかな?

とりあえずソース見られてもパスワードは知られない
書き換えられたら元も子もないけどね
■ このスレッドは過去ログ倉庫に格納されています