php sql инъекционная строка - PullRequest
0 голосов
/ 01 апреля 2012

у меня есть этот код, и по какой-то причине он вставляет точное значение (включая mysql_real ...)

mysql_query("INSERT INTO members (username) VALUES ('mysql_real_escape_string($uname)')");

как мне переписать это, чтобы у меня не было этой проблемы?

Ответы [ 2 ]

2 голосов
/ 01 апреля 2012

Вы также можете использовать подготовленный оператор , где PDO заботится о экранировании для любой базы данных, с которой работает (не только для MySQL):

$stmt = $dbh->prepare("INSERT INTO members (username) VALUES (:username)");

// either:
$stmt->bindParam(':username', $uname);
$stmt->execute();

// or as Corbin pointed out in the comments:
$stmt->execute(array('username' => $uname))
2 голосов
/ 01 апреля 2012

mysql_real_escape_string - это функция PHP, а не функция MySQL.

$value = mysql_real_escape_string($uname);

mysql_query("INSERT INTO members (username) VALUES ('$value')");

ОБНОВЛЕНИЕ: встроенная mysql_real_escape_string

mysql_query("INSERT INTO members (username) VALUES ('".mysql_real_escape_string($uname)."')");

...