Где использовать mysql_real_escape_string для предотвращения внедрения SQL?

У меня проблемы с группой хакеров. они несколько раз взламывали сайт моего клиента, и мой клиент еще больше разозлился 🙁 мой клиент потерял свою базу данных (у которой сотни записей), и ей пришлось ввести все 🙁

теперь я следую за несколькими введениями;

  • фиксированные права доступа к файлам
  • изменена информация о регистрации ftp и хоста
  • удалены все удаленные запросы mysql

теперь работает над проблемой SQL Injection. Я добавил mysql_real_escape_string к параметрам входа в панель администратора. Итак, где еще я должен использовать эту mysql_real_escape_string? У меня мало форм электронной почты на сайте, я не думаю, что мне нужно добавить туда …

У меня есть index.php как основная. Должен ли я что-то делать для этой страницы, чтобы предотвратить любую инъекцию sql-инъекций через url, например index.php?somesql= ?

Пожалуйста, посоветуй мне! Я так ценю !!! 🙁


например:

У меня такой код;

 public function showDetails($id) { // SQL Jobs Details $this->sql_job = "SELECT * FROM jobs WHERE id=".mysql_real_escape_string($id); $this->rst_job = mysql_query($this->sql_job); $this->row_all = mysql_fetch_assoc($this->rst_job); // SQL State $this->sql_state = "SELECT title FROM state WHERE id=" . $this->row_all[$this->tbl_jobs['f4']]; $this->rst_state = mysql_query($this->sql_state); $this->row_state = mysql_fetch_assoc($this->rst_state); ........ 

достаточно ли использовать mysql_real_escape_string для $ id. не для $ this-> row_all [$ this-> tbl_jobs ['f4']]

В принципе, каждый раз, когда вы используете некоторые небезопасные данные (пользовательский ввод, значение из базы данных, файл или внешний веб-сайт, то есть любые данные, на которых вы не уверены, что это безопасно на 100% ) в SQL-запросе, вы должны избегать его, используя mysql_real_escape_string . Обратите внимание, что в соответствии с OWASP эта функция небезопасна для экранирования имен динамических таблиц (но это гораздо реже, чем «базовая» ввод данных пользователя).

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

ИМО, предпочтительным способом предотвращения внедрения SQL является использование подготовленных операторов .

Помните, что если вы действительно используете mysql_real_escape_string() он работает только при использовании внутри строки, которая ограничена кавычками. Никогда не используйте его для каких-либо некотируемых значений. Это включает числовые значения; вместо этого убедитесь, что пользовательский ввод фактически является числовым.

Одним из золотых правил веб-разработки является НИКОГДА (КОГДА-ЛИБО!) Доверительный вклад пользователя. Поэтому в любом месте, где есть данные, поступающие в базу данных, вы должны вызвать mysql_real_escape_string ().

Кроме того, чтобы предотвратить появление гневных клиентов в будущем, вы должны регулярно создавать резервные копии своей базы данных. Если бы я был вашим клиентом, я был бы в ярости прямо сейчас.

Удачи в обеспечении безопасности вашего сайта.

Лучший способ предотвратить SQL-инъекцию – использовать подготовленные операторы и связывать переменные. Какую версию MySQL вы используете? Подготовленные отчеты доступны в формате 4.1 и выше.

Две самые большие вещи, связанные с пользовательским вводом, – это

  1. Входная фильтрация
  2. Выходное экранирование

Входная фильтрация – это процесс преобразования данных / [до] / он хранится в базе данных. Выполнение mysql_real_escape_string() относится к этому шагу (хотя есть более эффективные способы дезинфекции пользовательских данных для вставки db), но этот шаг также может включать в себя обрезку белого пространства, фильтрацию ненормативной лексики, преобразование разметки и многое другое.

Выход Escaping заботится, когда вы отправляете пользовательский контент в браузер, чтобы вы не допускали вредоносного поведения. Это означает выполнение htmlentities() или другого процесса выборочного скрининга.

Есть другие вещи, которые вы можете сделать, например, дросселирование ресурсов (предотвращение DOS), токены формы (защита CSRF) и т. Д. Перейдите в OWASP и начните чтение.