Показать сообщение отдельно
  #49 (permalink)  
Старый 25.05.2020, 01:27
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Вы знаете, что ID, это уникальный, в пределах типа поля, числовой идентификатор. При этом значения его всегда начинаются с 1, если только с дури самому не добавить 0. Если это один параметр запроса, то перед тем как вставить его значение в запрос приводим его к integer и проверяем:

if($id = (int)$_POST['id']) { ... }

Если вместо числа пришлют запрос, который хотят подставить к формируемому запросу, то $id будет равно 0. Зачем делать запрос к базе (писать в нее), зная, что таких id конечно же нет?

Но приведение к INT также может вернуть число и больше 0, значит ли это, что мы должны поверить и с радостью записать его в базу? Допустим у меня нет цели взломать вас, я просто шкодник, и если вы пишите в базу все что пришло, что мне мешает записать в нее кучи фикций? Конечно, вы можете в режиме администрирования или же планировщиком шерстить периодически свою базу на наличие недействительных данных удаляя их. Но может быть лучше проверить и если запрос "SELECT 1 FROM patients WHERE id = $id" закончился удачей, то добавляем запись в базу, иначе дурят нас?

Последний раз редактировалось laimas, 25.05.2020 в 01:43.
Ответить с цитированием