boypush
@boypush
Geek

Как обезопасить такой get запрос?

На js с помощью fetch посылаю get запрос с параметрами:
<script>
var paramsnew = 1;
fetch('file.php?params=' + paramsnew);
</script>
Обрабатываю запрос file.php
<?file_put_contents('file.txt', file_get_contents('file.txt') + $_GET['params']);?>
Как можно обезопасить get запрос, чтобы к примеру нельзя было в адресной строке ввести этот запрос и передать произвольное число?
  • Вопрос задан
  • 309 просмотров
Решения вопроса 4
toxa82
@toxa82
Никак, это запрос извне, передать могут что угодно.
Ответ написан
Комментировать
@AlexVWill
Пойми следующую простую логику: JS это код выполняемый на клиенте. Т.е. по большому счету все, что делает JS - делается полностью на совести клиента, в открытую, и клиент может полностью рулить процессом. Тем более, что у тебя данные не через POST передаются, а через GET (хотя большой разницы в данном случае нет), т.е. полностью открытым образом, поэтому пользователь может в строке браузера поставить что угодно. Поэтому, если ты хочешь что-то защитить, т.е. генерировать какой то код - переноси его генерацию на сервер. Ну или делай двухфакторную модель, т.е. часть генерится на сервере, часть на клиенте, и без сопоставления с серверною частью на сервере клиентская часть смысла не имеет.
Ответ написан
Комментировать
PageUp
@PageUp
Default
Я при передаче от клиента (приложения) данных в код php через GET делал так, создал свой уникальный ключ (любой набор символов и знаков, куча всего), он так же передается на сервер в GET запросе, а в PHP коде внутри идет проверка если значение ключа из GET совпадает с заданным в PHP файле, то только тогда GET запрос пропускать.

Соответственно извне тебе левый GET запрос не передадут не зная ключа твоего. Но это все равно не надежно, GET запросы могут перехватывать. Что уж говорить про браузер, где все это видно прямо в адресной строке. Тут уж лучше закрытыми данными передавать
Ответ написан
Комментировать
В общем случае если url формируется на фронте, то - защититься нельзя, можно лишь усложнить подмену. Если же url можно генерить на бэке, то используя технику подписи (вариант описал описал выше PageUp) можно контролировать процесс передачи.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@rPman
Вопрос задан коряво, тебе наотвечали соответственно.
Правильный вопрос (это я телепатствую) - как защитить файл file.txt от попадания в него не чисел?

Ответ - поставить либо проверку на число is_numeric и если false то возвращать код ошибки 400 с помощью http_response_code, либо принудительно преобразовывать любую строку в число с помощью к примеру intval или doubleval, которые вернут 0 для всех не чисел.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы