Loading...
Обучение/Помощь новичкам | Что не так с кодом?
Ramirez
Адм
(1 июня 2023, в 16:11)
Фильтруйте данные. Так как в вашем коде наблюдается уязвимость.

php
if (isset($_GET['page']) && $_GET['page'] !== null) 
{
$page = "Страница №" . urlencode($_GET['page']);
}


Достаточно в page передать к примеру DROP TABLE users и таблицы в базе как и не было
urlencode это сильно
Что не так - при отсутствии параметра page будет ошибка, нужно проверять через isset() и фильтровать через abs(intval())
php
<?php
if (isset($_GET['page'])) {
$p = 'Страница №' . abs(intval($_GET['page']));
}
Something (1 июня 2023, в 19:44)
Что не так - при отсутствии параметра page будет ошибка, нужно проверять через isset() и фильтровать через abs(intval())
php
<?php
if (isset($_GET['page'])) {
$p = 'Страница №' . abs(intval($_GET['page']));
}
Зачем abs, intval? (int) вполне достаточно
Jack Sparrow (1 июня 2023, в 17:06)
urlencode это сильно
Ну уже лучше нежели сплошная дыра
Да и вообще, это для примера, как можно реализовать.
Ramirez
Адм
(1 июня 2023, в 20:39)
Ну уже лучше нежели сплошная дыра
Да туда просто (int) добавляешь и из переменной улетает все что не является числом. А не выдумывать про urlencode, abs, intval.
________
посл. ред. 01.06.2023 в 21:00; всего 1 раз(а); by Jack Sparrow
Jack Sparrow (1 июня 2023, в 20:21)
Зачем abs, intval? (int) вполне достаточно
Чтобы тебе отрицательное значение не подсунули :-) . Ну вообще да, ты прав.

Кстати, чем "(int)" лучше чем "intval()"?
________
посл. ред. 01.06.2023 в 21:05; всего 1 раз(а); by Something
Something (1 июня 2023, в 21:01)
Чтобы тебе отрицательное значение не подсунули :-) . Ну вообще да, ты прав.

Кстати, чем "(int)" лучше чем "intval()"?
Ничем. (int) это оператор который приводит переменную к целому числу, так же делает и intval, но intval это функция, она может принимать сразу несколько чисел. В данном конкретном случае, тут достаточно просто (int), а intval можно использовать уже для более сложных задач.
Something (1 июня 2023, в 21:01)
Чтобы тебе отрицательное значение не подсунули :-) . Ну вообще да, ты прав.

Кстати, чем "(int)" лучше чем "intval()"?
int можно использовать как простое привндение числа intval() обычно предпочтительнее, когда нужны дополнительные возможности, к примеру установка значения по умолчанию. Может что-то не так сказал, int просто может быть более читабельным именно для этого примера кода
Ramirez
Адм
(1 июня 2023, в 21:12)
int можно использовать как простое привндение числа intval() обычно предпочтительнее, когда нужны дополнительные возможности, к примеру установка значения по умолчанию. Может что-то не так сказал, int просто может быть более читабельным именно для этого примера кода
Почти верно, только intval может ещё работать и со строковыми переменными.
Онлайн: 4
Время:
Gen. 0.0909
(c) Bym.Guru 2010-2025