PEAK XOOPS - magic quotes gpc の判断。 Re: myalbum-記事登録の文字化けについて in englishin japanese

magic quotes gpc の判断。 Re: myalbum-記事登録の文字化けについて

List posts in the topic

raise it magic quotes gpc の判断。 Re: myalbum-記事登録の文字化けについて

msg# 1.1.1
depth:
2
Previous post - Next post | Parent - No child | Posted on 2006/9/6 0:16
Ujiki.oO  一等兵 From: Yokosuka  Posts: 16
次のような記事を参照しました。

http://marijuana.ddo.jp/download/xoops_tips.html
Quote:
モジュール作成時に間違えやすいサニタイズ

XOOPSのサニタイズクラスには、stripSlashesGPCとaddSlashesがありますが、
ともにmagic quotes gpcの値を見て、関数を通すか判断しています。

間違えの例:
$hoge = $myts->stripSlashesGPC($_POST['hoge']);
echo 'ポストデータ'.$myts->htmlSpecialChars($hoge);
$sql = "INSERT INTO table (text) VALUES ('".$myts->addSlashes($hoge)."')";
この例では、magic quotes gpcがoffであれば問題ありませんが、
magic quotes gpcがonの場合にはaddSlashesされませんので、SQL Injectionが可能になってしまいます。

正しい例:
$hoge = $_POST['hoge'];
echo 'ポストデータ'.$myts->htmlSpecialChars($myts->stripSlashesGPC($hoge));
$sql = "INSERT INTO table (text) VALUES ('".$myts->addSlashes($hoge)."')";
受取ったデータは表示の時にstripSlashesGPCとhtmlSpecialCharsを掛けて、DBに保存するときにaddSlashesします。
気持ち的には受取ったときにstripSlashesGPCして生データにしておきたいですが、このやり方の場合は間違いです。

Free Web Hosting を利用する場合に、そのサーバー管理側の都合で、.htaccess を利用した、mbstring パラメーターのオーバーライドを許可していないサイトもあります。その場合、PHPのmbstringに関するパラメーターの設定がなされていないので、おうおうにして、文字化けを引き起こします。

mbstring関連のパラメーターを変更できないサイトにおけるXOOPS2の運用におきまして文字化けが起こる場合では、modules/myalbum/submit.php と modules/myalbum/editphoto.php について、前述しましたルールの通りにソースを変更させていただきましたが、対応以降、文字化けは起きておりません。
具体的には、例えば modules/myalbum/submit.php であれば、
//	$title = $myts->stripSlashesGPC( $_POST["title"] ) ;
	$title = trim( $_POST["title"] ) ;
//	$desc_text = $myts->stripSlashesGPC( $_POST["desc_text"] ) ;
	$desc_text = $_POST["desc_text"] ;
と、変数をそのまま代入し、
//	$sql = "INSERT INTO $table_photos (lid, cid, title, ext, submitter, status, date, hits, rating, votes, comments) VALUES ($newid, $cid, '".addslashes($title)."', '$ext', $submitter, $status, $date, 0, 0, 0, 0)";
	$sql = "INSERT INTO $table_photos (lid, cid, title, ext, submitter, status, date, hits, rating, votes, comments) VALUES ($newid, $cid, '".$myts->addSlashes($title)."', '$ext', $submitter, $status, $date, 0, 0, 0, 0)";
と変更しました。こうすれば、どんな環境でも文字化け問題は解決するのかも知れません。

- Ujiki.oO -
Votes:50 Average:1.80

Posts tree

  Advanced search


Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!