2012-04-24 1 views
1

mySQLに新しいレコードを挿入するたびに、regデータの末尾に接尾辞として "v"という文字を追加する必要があります。挿入時に入力データに接尾辞を追加します。これは可能ですか? (mySQL/php)

ここに私の挿入スクリプトがあります。クライアントがこのPHPアクションを挿入して挿入する際に、文字 "v"をregデータに置くことは可能ですか?

<? 
$order = "INSERT INTO reg_add ( 
connect_date, 
reg, 
first_name, 
last_name) 

VALUES 

('$_POST[connect_date]', 
'$_POST[reg]', 
'$_POST[first_name]', 
'$_POST[last_name]')"; 

$result = mysql_query($order); 

if ($result) { 

$reg =  $_REQUEST['reg'] ; 
$first_name = $_REQUEST['first_name']; 

header("location: reg_add_success.php?reg=" . urlencode($reg) . "&first_name=" . urlencode($first_name)); 
} 
else { 
header("location: reg_add_fail.php"); 
} 
?> 
+0

に対して脆弱であるあなたのフィードバックのために、すべてに感謝します。とてもありがたい。 – Erik

答えて

0
$order = "INSERT INTO reg_add ( 
connect_date, 
reg, 
first_name, 
last_name) 

VALUES 

('$_POST[connect_date]', 
'{$_POST[reg]}v', 
'$_POST[first_name]', 
'$_POST[last_name]')"; 
+1

はい、これは技術的に正解ですが、私の答えのリンクをたどって、誰かが文字通りデータベースを破壊するのが簡単です。 –

+0

あなたは正しいです! –

0

あなたはできます。 $order = "...の前に$_POST[reg] .= 'v';を追加してください。

3

危険なことは間違いありません。基本的に、悪意のあるユーザーにSQLインジェクションを実行するために必要なものすべてを提供しています。

あなたの値を収集し、悪意のあるコードが含まれていないことを検証して、挿入を実行します(必要なサフィックスを追加しました)。

真剣に...これは起こることが保証されている災害です。このうち

チェック: http://www.unixwiz.net/techtips/sql-injection.html

+0

フィードバックに感謝します。ありがとうございました。 – Erik

0
$reg = stripslashes($_POST['reg']); 
$reg = sprintf("%s%s",$reg,'v'); 

'".mysql_real_escape_string($reg)."', 

すべての値は、MySQLにINSERTを作る時に()関数をmysql_real_escape_stringのしている必要があります。

2

まず、文字列に 'v'を追加してください。

次に、 プレーンなmysqlライブラリを使用しないでください。 mysqli(MySQLの改良版)ライブラリを使用し、準備済みのステートメントを使用する必要があります。

http://php.net/manual/en/mysqli.prepare.php

そうでなければ、あなたのコードは、SQLインジェクション

+1

mysqliだけでなく、PDOも使用できます。 – liquorvicar

+0

いずれかが細かい –

+0

を行い、非常に少なくても、値が "select | delete | update | drop | insert | alter"を含まないことを確認する必要があります –

関連する問題