SQLの窓

2010年01月21日


PHP+MySQLで、SQLインジェクション対策の為に、一括で mysql_real_escape_string を行う一つの手段

$_POST 内の入力データを参照する入力フィールド名に "sql_" という
文字列を前に付加したものに変換したデータをセットして利用します。

これですと、変換前のデータはそのままです。
ローカル変数に入れなおしても良いのですが、完全なコーディング
規約が無い場合、$_POST というスーパーグローバルをそのまま利用
するほうが混乱がありません
<?
header( "Content-Type: text/html; Charset=euc-jp" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );


$server = 'localhost';
$dbname = 'lightbox';
$user = 'root';
$password = 'password';

// 接続解除
$connect = @mysql_connect( $server, $user, $password );
if ( !$connect ) {
	print "接続エラーです";
	exit();
}

// DB選択
mysql_select_db( $dbname, $connect );

// データベース上のユーザに一致するかどうかを調べる
$_POST['username'] = "' OR '' != ''";
$_POST['password'] = "'";

foreach( $_POST as $Key => $Value ) {
	$_POST["sql_". $Key] = mysql_real_escape_string( $Value, $connect );
}

$query = <<<QUERY
SELECT * FROM users
	WHERE user = '{$_POST['sql_username']}'
	 AND password = '{$_POST['sql_password']}'
QUERY;

$result = mysql_query($query,$connect);
print_r($result);
print "<pre>";
print_r(mysql_fetch_row($result));
print "</pre>";

?>

関連する記事
PHPのマニュアルにある、SQLインジェクション攻撃の例


タグ:SQL MySQL
【PHP + データベースの最新記事】
posted by lightbox at 2010-01-21 14:17 | PHP + データベース | このブログの読者になる | 更新情報をチェックする
バッチ処理

Microsoft Office
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
CSS ドロップシャドウの参考デモ
Google Hosted Libraries
cdnjs
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり