2015-04-01 3 views
1

Я начинаю процесс скрыть все мои MySQL до MySQLi.Mysqli и escape строки?

Я делал много исследований по этому вопросу, но считаю это немного запутанным.

У меня есть два вопроса, на данный момент по данному вопросу:

1) Что именно означает «бежать» строку и где код для этого идти? Я предполагаю, что это идет на моей странице с моими учетными данными для входа в базу данных.

я нашел следующий, но найти его довольно трудно интерпретировать:

«Мы будем использовать функцию mysqli_real_escape_string() Поскольку требуется подключение к базе данных, мы будем идти вперед и обернуть его в своей собственной функции. . Кроме того, так как нам нужно только, чтобы избежать строк, мы могли бы также процитировать значение в то же время: «

`

function db_quote($value) { 
    $connection = db_connect(); 
    return "'" . mysqli_real_escape_string($connection,$value) . "'"; 
    } 

` » Если мы не уверены в типе значения мы переходим к базе данных, это всегда st, чтобы рассматривать его как строку, убежать и процитировать его. Давайте рассмотрим общий пример - представление формы. Мы будем использовать наш предыдущий запрос INSERT с пользовательского ввода:»

`

// Quote and escape form submitted values 
$name = db_quote($_POST['username']); 
$email = db_quote($_POST['email']); 
// Insert the values into the database 
$result = db_query("INSERT INTO `users` (`name`,`email`) VALUES (" . $name . "," . $email . ")"); 

` 2) После того, как я этот набор в моем коде, как я правильно проверить, что это действительно работает (Без укомплектовать уничтожив мои таблицы и т.д.?)

мне просто очень нужны некоторые дополнительные разъяснения по этому вопросу, прежде чем начать процесс.

Любые ресурсы, советы или указатели в правильном направлении было бы весьма признателен.

+1

Давайте немного поднимемся. Я предлагаю вам использовать подготовленные инструкции в приведенном вами примере, а не 'mysqli_real_escape_string'. – bloodyKnuckles

+0

Я нахожусь на этапе обучения, вы можете дать некоторое представление об этом, где я ошибаюсь –

+0

Вопрос, который отмечен как дубликат, - отличное место для начала: http://stackoverflow.com/questions/60174/how-can -i-prevent-sql-injection-in-php – bloodyKnuckles

ответ

0

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

Что касается того, где он идет, в любое время, когда вы создаете запрос с неконтролируемыми значениями, эти значения должны быть экранированы.

**After I have this set up in my code, how do I properly test that it is indeed working (Without completly wiping out my tables, etc?)** 

Я предпочитаю сочетание извлечения окончательного запроса для ручного тестирования, а также широкое использование тестовой базы данных, так что целостность вашей производственной базы данных не влияет в процессе разработки.

+0

спасибо @lockdown за ваш ответ ... –

Смежные вопросы