Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #41 (permalink)  
Старый 24.05.2020, 18:42
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от konsa
Да нет, для меня важно и мнение
Вам больше нужно уделять внимание не моему мнению, а тому на чем советуют заострять внимание.

VALUES (? ... и bind_param

экранируют параметры запроса исключив инъекцию. Но ведь у вас ID пациентов не число, что уже само по себе затруднение, а ведь можно прислать и фиктивный ID, а вы будете писать в базу. Как минимум нужно удостовериться в том, что это ожидаемый ID - https://www.php.net/manual/ru/book.filter.php , непосредственно подставлять в запрос $_POST['kasId'] конечно же нельзя.
Ответить с цитированием
  #42 (permalink)  
Старый 24.05.2020, 18:45
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от konsa
только в Денвере(
Пост 39 и проверьте, чудес не бывает, есть какая-то причина, тем более, что сервер отвечает как вы утверждаете.
Ответить с цитированием
  #43 (permalink)  
Старый 24.05.2020, 19:00
Интересующийся
Отправить личное сообщение для konsa Посмотреть профиль Найти все сообщения от konsa
 
Регистрация: 05.02.2020
Сообщений: 26

Сообщение от laimas Посмотреть сообщение
Пост 39 и проверьте, чудес не бывает, есть какая-то причина, тем более, что сервер отвечает как вы утверждаете.
Тут вы оказались правы, моя невнимательность. Все заработало!
Ответить с цитированием
  #44 (permalink)  
Старый 24.05.2020, 19:01
Интересующийся
Отправить личное сообщение для konsa Посмотреть профиль Найти все сообщения от konsa
 
Регистрация: 05.02.2020
Сообщений: 26

Сообщение от laimas Посмотреть сообщение
Вам больше нужно уделять внимание не моему мнению, а тому на чем советуют заострять внимание.

VALUES (? ... и bind_param

экранируют параметры запроса исключив инъекцию. Но ведь у вас ID пациентов не число, что уже само по себе затруднение, а ведь можно прислать и фиктивный ID, а вы будете писать в базу. Как минимум нужно удостовериться в том, что это ожидаемый ID - https://www.php.net/manual/ru/book.filter.php , непосредственно подставлять в запрос $_POST['kasId'] конечно же нельзя.
А вот с этим мне предстоит серьезно разобраться, чем сейчас и займусь
Ответить с цитированием
  #45 (permalink)  
Старый 24.05.2020, 19:04
Интересующийся
Отправить личное сообщение для konsa Посмотреть профиль Найти все сообщения от konsa
 
Регистрация: 05.02.2020
Сообщений: 26

Еще один вопросик:
kasId у меня нигде не вводится, он генерируется random() при вводе нового пациента, может что-то и тут можно правильнее сделать?
Ответить с цитированием
  #46 (permalink)  
Старый 24.05.2020, 19:12
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от konsa
kasId у меня нигде не вводится, он генерируется random()
Это не случайное, если говорить правильно, это псевдослучайное значение. То есть, уникальности, что обязательно должно быть у каждого из пациентов, такое ID не гарантирует. Уберите его и пусть это будет поле с автоинкрементом, какие-то ID с буковками, если они так нужны, можете держать в другом поле, хотя начерта они нужны, если только это не признаки по каким либо группам.

А числовой ID легко проверить приведением к integer, как ранее показывалось. Если запрос "с довеском инъекции", то будет 0 (или только число), а таких ID в базе не будет, что сразу дает понять - запрос левый, а значит, и базу можно не тревожить, и проходимцу вообще не отвечать.

PS. Если ID реально (возвращает не 0), то сначала лучше убедиться в том, что такой пациент в базе есть, и только есть, тогда запись.

Последний раз редактировалось laimas, 24.05.2020 в 19:17.
Ответить с цитированием
  #47 (permalink)  
Старый 24.05.2020, 19:23
Интересующийся
Отправить личное сообщение для konsa Посмотреть профиль Найти все сообщения от konsa
 
Регистрация: 05.02.2020
Сообщений: 26

Огромное спасибо, ребята! Я может и затупил мощно, но, благодаря вам открыл для себя много нового. По меньшей мере знаю в какую сторону двигаться в данный момент, за что спасибо laimas и Rise
Ответить с цитированием
  #48 (permalink)  
Старый 24.05.2020, 22:38
Интересующийся
Отправить личное сообщение для konsa Посмотреть профиль Найти все сообщения от konsa
 
Регистрация: 05.02.2020
Сообщений: 26

Сообщение от laimas
А числовой ID легко проверить приведением к integer, как ранее показывалось. Если запрос "с довеском инъекции", то будет 0 (или только число), а таких ID в базе не будет, что сразу дает понять - запрос левый, а значит, и базу можно не тревожить, и проходимцу вообще не отвечать.
Но, обращение в базу ведь все равно будет?
Ответить с цитированием
  #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.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывести результат AJAX в div с динамическим ид voron121 AJAX и COMET 6 30.05.2016 18:46
AJAX результат kirill1989 AJAX и COMET 1 11.12.2014 04:03
Как сделать так чтобы ajax возвращал результат? Rooner AJAX и COMET 7 28.06.2013 12:42
Как вернуть результат из ajax внутри функции? Rooner AJAX и COMET 4 29.03.2013 19:15
Не выводится результат MySQL (при использовании AJAX) iBars AJAX и COMET 1 17.12.2012 09:13