Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Основы PHP...

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

Открыть новую тему     Написать ответ в эту тему

Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Берем функцию
    function test_input($data) {
    $data = trim($data);
    addslashes($data);
        return $data;
}
 
В форму вводим
asv('), ("), (\)
 
Результат обработки функцией заносим в текстовой файл. и в нем видим:
asv('), ("), (\)
 
Абсолютно тоже самое.
Не знаю, как это понять...

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 11:12 11-05-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn
вы не читаете, что вам пишут???

Цитата:
addslashes($data);

возвращает, а не меняет значение первоначальной переменной. второй раз об этом говорю
$data = addslashes($data);

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 11:14 11-05-2023
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тогда, может быть, лучше всего так сделать?
 
    function test_input($data) {
        $data = trim($data);
        $data = stripslashes($data);
        $data = addslashes($data);
        $data = htmlspecialchars($data);
        return $data;
    }

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 13:27 11-05-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
$data = stripslashes($data);
        $data = addslashes($data);

Зачем????? Зачем сначала экранировать, а потом убирать слзши?

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 18:48 11-05-2023
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Зачем????? Зачем сначала экранировать, а потом убирать слзши?
Здесь порядок обратный.
 
 
stripslashes - Вы сами пишете: затем, что добавление делает безопасным использование внтури строки, когда ваши кавычки могут быть закрыты чужими.
 
стрип их удаляет
 
 
В моем блокнотике есть запись (из другого вопроса):
 
Mavrikii
"переменные обрабатывать хотя бы через addslashes() "
 
 

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 21:30 11-05-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn
 

Цитата:
В моем блокнотике есть запись (из другого вопроса):

так зачем вы применяете ОБЕ функции?? одна добавляет, вторая удаляет - какой смысл применять ОБЕ сразу?
если беспокоитесь, что включены magic_quotes - просто проверьте значение из конфига php.
но это уже давно отключено по умолчанию.
 
 

Цитата:
Вы сами пишете: затем, что добавление делает безопасным использование внтури строки, когда ваши кавычки могут быть закрыты чужими

я правильно пишу.
 
если у вас есть, как пример,
SELECT * FROM table WHERE column='$var'
 
то при наличии ' в $var, можно сделать
$var = "val' UNION SELECT * FROM table2 WHERE column='val2";
 
тогда запрос преобразуется в
SELECT * FROM table WHERE column='val' UNION SELECT * FROM table2 WHERE column='val2'
 
и получить доп данные из базы. это как один из примеров, может просто создавать запрос с ошибкой и нарушить работу скрипта. все зависит от конкретных ситуаций, реализаций.
 
либо позволит создать XSS, если вставляете код в html.
в оригинале
<a href='$url'>click me</a>
если не экранировать, то прямая вставка $url = "#' onclick='alert(1)" преобразует в  
<a href='#' onclick='alert(1)'>click me</a>
 
http://lifeexample.ru/php-primeryi-skriptov/ekranirovanie-kavyichek-v-php-javascript-i-sql.html

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 21:35 11-05-2023 | Исправлено: Mavrikii, 21:58 11-05-2023
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
По Вашей ссылке:
addslashes лучше использовать для сериализованной строки при записи ее в базу, а mysql_real_escape_string для всех пользовательских данных пришедших с формы на сайте.
 
Честно говоря, я всегда и сам считал именно так, пока не встретил в статье ту функцию с использованием stripslashes, которая и породила этот вопрос.
 
Спасибо!

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 21:59 11-05-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
пока не встретил в статье ту функцию с использованием stripslashes, которая и породила этот вопрос.

она нужна в той ситуации, когда экранирование не нужно.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 22:02 11-05-2023
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый вечер!
 
Я создавал некий скрипт, и в какой-то момент страница с этим скриптом стала выдавать HTTP ERROR 500.
 
Чтобы понять, какой из кодов создает эту проблему, я начал постепенно удалять написанное. И получилось, что проблему вызывает строка 3 вот в этом безобидном коде.
 
<?php
 
    echo "ip $ip n $n time_err $time_err blok $blok";
 
    die("5");
 
    mysqli_query($db, "UPDATE `meru` SET `blok` = "yes" WHERE `ip` = '$ip'");
 
?>
Если эту строку закомментировать, сообщение HTTP ERROR 500 исчезает.  
 
Даже если допустить, что строка 3 написана неверно, всё равно она не должна блокировать сервер!
 
И еще.
 
Обратите внимание, что выше по коду находится команда die, останавливающая выполнение скрипта. Получается, что die в данном случае не исполняется?

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 22:06 17-06-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
mysqli_query($db, "UPDATE `meru` SET `blok` = "yes" WHERE `ip` = '$ip'");

у вас серьезные проблемы с пониманием вложенности кавычек.
https://code-basics.com/ru/languages/php/lessons/quotes
 
когда вы начинаете строку с ", любые следующе ", что не экранированы, вызывают окончание строки и возникает ошибка синтаксиса. php интерпретатор сначала парсит файл, и если в нем есть ошибка синтаксиса, то он не знает как его вообще исполнять.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 22:11 17-06-2023
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да, это я проглядел, спасибо!
 
А разве die("5"); не останавливает парсинг на том месте, где он находится?

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 22:33 17-06-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
А разве die("5"); не останавливает парсинг на том месте, где он находится?

останавливается выполнение кода, а не парсинг.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 22:36 17-06-2023
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Все ж таки непонятно, почему такая суровая диагностика - HTTP ERROR 500 ?
И нельзя ли ее сделать более информативной?
 
В файле .htaccess :
# работа с ошибками PHP для серверов разработчиков
php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag log_errors on
php_flag ignore_repeated_errors off
php_flag ignore_repeated_source off
php_flag report_memleaks on
php_flag track_errors on
php_value docref_root 0
php_value docref_ext 0
php_value error_log !!PHP_errors.log
php_value error_reporting -1
php_value log_errors_max_len 0
 
Может быть, в него чего-то добавить? Или есть иные средства?

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 10:21 18-06-2023 | Исправлено: Vladsvn, 10:29 18-06-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
И нельзя ли ее сделать более информативной?

зачем? больше деталей - больше возможностей для хакеров.
вся информация есть в логах.
 
error_reporting(E_ALL);
ini_set('display_errors', 'On');
 
или аналогичные параметры в .ini файле

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 22:49 18-06-2023
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

Компьютерный форум Ru.Board » Интернет » Web-программирование » Основы PHP...


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru