Обрабатывать кавычки и команды в строке SQL - PullRequest
1 голос
/ 09 января 2010

В моей таблице MySQL у меня есть столбец типа TEXT. В моей HTML-форме пользователь вставляет в нее текст, который может содержать "", '() и так далее. Я хочу знать, как безопасно выполнить Вставить запрос, если эти символы существуют в тексте и могут привести к сбою выполнения запроса.

Как правильно их обрабатывать в PHP?

Ответы [ 2 ]

4 голосов
/ 09 января 2010

Если вы не используете подготовленные операторы (либо с PDO , либо с MySqli ), вы должны передать ввод пользователя через MySql_Real_Escape_String () . Или MySqli_Real_Escape_String () , если вы используете MySqli (но не подготовленные операторы).

Однако я бы посоветовал вам использовать подготовленные операторы , так как ваша жизнь станет намного проще, и вы получите защиту от SQL-инъекций бесплатно.

3 голосов
/ 09 января 2010

Использовать подготовленный оператор .

Подготовленные заявления могут помочь увеличить безопасность путем отделения логики SQL от данные предоставляются. это разделение логики и данных может помочь предотвратить очень распространенный тип уязвимость называется инъекцией SQL атака. Обычно, когда вы имеете дело со специальным запросом, вы должны быть очень осторожен при обработке данных что вы получили от пользователя. это влечет за собой использование функций, которые экранируют все необходимые неприятности символы, такие как одинарные кавычки, двойная кавычка и обратная косая черта персонажи. Это не нужно, когда иметь дело с подготовленными заявлениями. разделение данных позволяет MySQL автоматически учитывать эти персонажи и они не должны быть сбежал с помощью любой специальной функции.

Быстрый пример,

$db = new mysqli('localhost', 'username', 'password', 'db');
$stmt = $db->prepare("INSERT INTO mytable (text_column) VALUES (?)");
$stmt->bind_param("s", $mytext); // s = string, b = boolean, i = int, etc
$stmt->execute();
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...