Зингельшухер: Данные надо проверять а не преобразовывать
Ну, зависит от задач. Если данные пользовательские - то да, ему нужно тыкать ошибки, пока не введет правильно. А если передается идентификатор объекта для последующего добавления в запрос, и его можно подменить через GET - то проще привести данные к int (в этом случае и нули в начале, и 2 млрд - неактуальны), и использовать их. А выводить взломщику сообщение "ваш xss содержит недопустимые символы" - лень:)
Зингельшухер: преобразовывать их надо не в зависимости от того откуда пришли а от того куда пойдут.
Ну, внутренние переменные (определенные за 100 строк до передачи) я стараюсь изначально в правильном виде определять:)
PS: за ссылку спасибо 🍻
PPS: is_numeric ругается на пробел после числа, а это достаточно распространенная ошибка ввода в поле. Соответственно, нужно еще и trim использовать?
Вообще, надо привыкать приводить все используемые внешние переменные к нужному типу, чтоб впоследствии не болела голова. Т.е. если ждете число - делаете $id = (int)$_GET['id'], если данные приходят через POST-форму - то и забираете их из $_POST, проверив при этом $_SERVER[HTTP_REFERER].
В данном случае - да, проверяете регуляркой (учтя все варианты, в т.ч. слеши и т.п., если необходимо).
snug: И ещё вопрос в догонку. Если у меня на сайте есть 3 формы. Данные из них тоже не никак не фильтруются, не обрабатываються, и на сайте не светяться, только сохраняються в файл .txt. Как злоумышленник может это использовать?
Зависит от того, как написан скрипт сохранения данных в файл.
Ну для "пинка в правильную сторону" - это, разумеется, подойдет:) Но ТС, судя по вопросу, интересует готовое решение, и можно ждать следующих вопросов:
1. Я указал папку "/statyi/novyie/vasya" (или вообще с другого сайта), но она не вывелась!
2. Почему-то не работает, если название файла начинается с заглавной буквы!
3. Данные вводятся через форму на главной странице, скрипт их не видит!
4. У меня файл называется "реферат.html" - так что, нельзя?
и т.п.
Поэтому просто гадать насчет условий не хочется, а
Зингельшухер: если на форуме спросить (и спросить правильно) то и вовсе бесплатно
Prior: Так ведь открытие запаски никак не связано с автоматическим раскрытием основного ...."рыжую" всё равно выдергивать придется чтобы запаска не раскрылась.
"Рыжей" там нет вообще, так что запаска - только на ручном раскрытии.
Prior: А другое - толкнуться и бешенным усилием подчинить волю и начать считать....501..502...503... ))) Не знаю...я без этого первый прыжок не представляю :)
Меня в первый раз тоже на автораскрытии выбрасывали, насколько помню, эмоций было через край и без 521-522-523 :)
Я думаю, если всех перворазников бросать с веревочкой, то инструкторы дропзоны замучаются за ними запаски укладывать:) Есть подозрение, что многие все же забудут посчитать или дернуть:)
Prior: Как так - сам раскроется? А как же заветные "пятьсот один-пятьсот два-пятьсот три-кольцо!"?
Когда веревочкой к самолету привязан - можно не считать:) Перворазников, насколько я знаю, сейчас пристегивают в обязательном порядке. И высотомер не вешают, который сам запаску раскрывает.
motoman: парашют сам раскроется и я приземлюсь со скоростью 5м/с
Тогда это скорее всего не дуб (Д-6), а Д1-5У, который имеет собственную горизонтальную скорость 5 м/с :) И там даже шнурка дергать не надо - он, как правило, на автораскрытии. И наиболее комфортное приземление - лицом против ветра, чтоб горизонтальную скорость погасить.
В первый раз скучно не будет - т.к. всё в новинку, теория по сравнению с практикой - это ничто:) А вот второй раз - уже да, скорее всего будет скучно, надо брать новые вершины!
А чего это инструктаж сильно заранее? Странно как-то:)
Если не впадать в ступор при приземлении (хотя бы не забыть ноги держать вместе) - то ничего не повредится:) Если изображать 5-конечную звезду на веревочке - то можно что-нить вывихнуть/сломать:)
Данные надо проверять а не преобразовывать
Ну, зависит от задач. Если данные пользовательские - то да, ему нужно тыкать ошибки, пока не введет правильно. А если передается идентификатор объекта для последующего добавления в запрос, и его можно подменить через GET - то проще привести данные к int (в этом случае и нули в начале, и 2 млрд - неактуальны), и использовать их. А выводить взломщику сообщение "ваш xss содержит недопустимые символы" - лень:)
преобразовывать их надо не в зависимости от того откуда пришли а от того куда пойдут.
Ну, внутренние переменные (определенные за 100 строк до передачи) я стараюсь изначально в правильном виде определять:)
PS: за ссылку спасибо 🍻
PPS: is_numeric ругается на пробел после числа, а это достаточно распространенная ошибка ввода в поле. Соответственно, нужно еще и trim использовать?
snug, да, правильно поняли.
Вообще, надо привыкать приводить все используемые внешние переменные к нужному типу, чтоб впоследствии не болела голова. Т.е. если ждете число - делаете $id = (int)$_GET['id'], если данные приходят через POST-форму - то и забираете их из $_POST, проверив при этом $_SERVER[HTTP_REFERER].
В данном случае - да, проверяете регуляркой (учтя все варианты, в т.ч. слеши и т.п., если необходимо).
И ещё вопрос в догонку. Если у меня на сайте есть 3 формы. Данные из них тоже не никак не фильтруются, не обрабатываються, и на сайте не светяться, только сохраняються в файл .txt. Как злоумышленник может это использовать?
Зависит от того, как написан скрипт сохранения данных в файл.
Я предложил :)
Ну для "пинка в правильную сторону" - это, разумеется, подойдет:) Но ТС, судя по вопросу, интересует готовое решение, и можно ждать следующих вопросов:
1. Я указал папку "/statyi/novyie/vasya" (или вообще с другого сайта), но она не вывелась!
2. Почему-то не работает, если название файла начинается с заглавной буквы!
3. Данные вводятся через форму на главной странице, скрипт их не видит!
4. У меня файл называется "реферат.html" - так что, нельзя?
и т.п.
Поэтому просто гадать насчет условий не хочется, а
если на форуме спросить (и спросить правильно) то и вовсе бесплатно
:)
Подскажите что нужно сделать и изменить тут, чтоб прекратить спам.
Жду с нетерпением ответов.
Пока не расскажете, какую роль выполняет вышенаписанный кусок кода, никто не сможет предложить правильное решение.
Так ведь открытие запаски никак не связано с автоматическим раскрытием основного ...."рыжую" всё равно выдергивать придется чтобы запаска не раскрылась.
"Рыжей" там нет вообще, так что запаска - только на ручном раскрытии.
А другое - толкнуться и бешенным усилием подчинить волю и начать считать....501..502...503... ))) Не знаю...я без этого первый прыжок не представляю :)
Меня в первый раз тоже на автораскрытии выбрасывали, насколько помню, эмоций было через край и без 521-522-523 :)
Я думаю, если всех перворазников бросать с веревочкой, то инструкторы дропзоны замучаются за ними запаски укладывать:) Есть подозрение, что многие все же забудут посчитать или дернуть:)
Как так - сам раскроется? А как же заветные "пятьсот один-пятьсот два-пятьсот три-кольцо!"?
Когда веревочкой к самолету привязан - можно не считать:) Перворазников, насколько я знаю, сейчас пристегивают в обязательном порядке. И высотомер не вешают, который сам запаску раскрывает.
парашют сам раскроется и я приземлюсь со скоростью 5м/с
Тогда это скорее всего не дуб (Д-6), а Д1-5У, который имеет собственную горизонтальную скорость 5 м/с :) И там даже шнурка дергать не надо - он, как правило, на автораскрытии. И наиболее комфортное приземление - лицом против ветра, чтоб горизонтальную скорость погасить.
В первый раз скучно не будет - т.к. всё в новинку, теория по сравнению с практикой - это ничто:) А вот второй раз - уже да, скорее всего будет скучно, надо брать новые вершины!
дубль-парашют
А чего это инструктаж сильно заранее? Странно как-то:)
Если не впадать в ступор при приземлении (хотя бы не забыть ноги держать вместе) - то ничего не повредится:) Если изображать 5-конечную звезду на веревочке - то можно что-нить вывихнуть/сломать:)