- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
mendel, вы не читаете то что написано. На каждый вопрос я дал ответ минимум дважды.
Если же вы хотите "прямо в лоб" ответ, чтоб даже школьник прочитал и понял поясняю.
Пришла строка
$username = 'asdfg"hjk';
Вы её ескейпнули автоматом получилось asdfg\"hjk
И допустим отправили на мыло человеку "Уважаемый asdfg\"hjk спасибо за регистрацию" а между тем его имя без слеша
Потом PDO или MySQLi ескейпнула эту строку и в базе у вас лежит asdfg\"hjk
Допустим вы увидели лишний слеш, и по вашей логике (чтоб не портить безопасность) при выводе их базы вы стрипните слеш и в браузере (и при отправке мыла) ник будет написан правильно (однако это не отменяет того факта что это уже "костыль") Более того вам придётся делать много таких "костылей" в будущем (в каком-то модуле например надо будет считать длинну ника, или ещё что-то подобное) в итоге ваш код будет состоять из одних костылей (и допустить уязвимость в такой куче кода куда проще...)
Представьте теперь что юзер вбивает в поиск -
найти сообщения asdfg"hjk
И не находит ничего, потому что в базе у вас лежит asdfg\"hjk
Ваша главная ошибка в том, что ищете у меня ошибки
В общем согласен, завязываю искать у вас ошибки, я не знал что у вас ещё так мало опыта проектирования. (возможно кодер вы отличный, но вот "образно" мыслить у вас получается не очень)
Представьте теперь что юзер вбивает в поиск -
найти сообщения asdfg"hjk
И не находит ничего, потому что в базе у вас лежит asdfg\"hjk
А вбивает он конечно же телепатически, а не через тот же фильтр? :)
Т.е. я хочу сказать, что именно костылей будет ну совсем уж немного.
Хотя да, есть над чем подумать... Просто хочется поменьше устрожений, но в тоже время максимально надежно.... думал о передаче параметра "тип" при запросах внешних данных, чтобы фильтровалось по типу (Например емайл, домен, имя текст или хтмл...) но это устрожение, могут вообще забить... не уверен пока....
костылей будет ну совсем уж немного
1 - сколько раз используются данные, столько и костылей
2 - наличие костылей вообще = признак неграмотного проектирования (а когда они вовсе являются неотъемлемой частью кода, то это первый признак того что надо что-то менять)
wano-moroz добавил 07.02.2011 в 11:26
Просто хочется поменьше устрожений
Это не повод всё усложнять.
Расскажу историю из опыта.
Сел я как-то за совершенно новый для меня язык программирования, причём в совершенно новой области (надо было написать маленькую прогу на сотню строк кода, но обязательное условие было написать его на конкретном языке который я увидел первый раз в жизни)
Написал я её за один вечер, так написал что самого тошнило. Только самый минимум, лишь бы работало, никаких проверок итд.... Потом когда появилось время, стал я подучивать этот новый язык, освоил много нового, переписал эту прогу ещё раз (она стала весить больше, было куча всяких проверок и обработок) потом ещё и ещё... Потом когда освоил язык уже действительно хорошо, переписал последний раз... И вдруг сюрприз, оказалось что я вернулся к тому самому первому варианту на 100 строк, оказалось там и не должны быть все эти проверки/обработки итд...
Тоже самое и в РНР, чем больше опыта тем меньше кода (и конечно костылей)
Fearful, есть еще шаблоны построенные на пхп. Тот же вордпресс к примеру - нельзя тупо скачать шаблон, поставить и забыть - ты обязательно должен его перечитать, в поисках гадостей или случайных уязвимостей.
Если шаблоны на Смарти или еще хуже - на голом пхп, то верстальщик ВЫНУЖДЕН думать о безопасности, потому что за него не подумал разработчик.
Помоему вы просто пытаетесь сэкономить :)
Предположим, я попросил человека сверстать сайт. Он выдал мне гипотетический html шаблон:
Вы хотите чтобы он проделал больше полезной работы и вместо <title>Заголовок</title> сделал что-то типа <title><?=siteTitle();?></title>? Чтобы человек сделал подобное, он должен знать, например, php. Качество его знаний php определяется в том числе безопасностью выдаваемого им кода. Если человек пишет небезопасный, следовательно плохой код, то ему не надо давать такие сложные задачи как использование php в шаблонах. Ну и, соответственно, оплачивать его труд по другой ставке.
Просто может я не очень понимаю суть претензий? Ну, например, если вы наняли водителя, едете с ним на своей машине и водитель покорежил бампер и разбил фары о забор, вы же не будете обвинять производителей автомобиля в случившемся? Вопрос в профессионализме водителя, правильно? Точно так же и при создании сайтов, я считаю.
wano-moroz, ну сколько надо повторять, что
сколько раз используются данные, столько и костылей
это Ваша фантазия? :) В основной массе данные проходят с эскейпом на ура... Даже приведенный вами поиск и тот работает без проблем (см. выше).
наличие костылей вообще = признак неграмотного проектирования
признак, но не доказательство :) Иногда целесообразнее маленький костыль, чем огромный правильный монстр.
Вообще я в принципе согласен, что парадигма "фильтруй выход" может оказаться лучше, чем "фильруй вход", но вот такой вот подход "есть только один правильный путь" не очень конструктивен :)
mendel добавил 07.02.2011 в 15:00
Вы хотите чтобы он проделал больше полезной работы и вместо <title>Заголовок</title> сделал что-то типа <title><?=siteTitle();?></title>?
Нет, я хочу чтобы он сделал <title>{sitetitle}</title>
Чтобы человек сделал подобное, он должен знать, например, php.
Качество его знаний php определяется в том числе безопасностью выдаваемого им кода.
Угу. Поэтому то я и считаю, что верстальщик не должен писать на пхп или смарти :)
По моему мнению язык шаблонов должен быть настолько прост, чтобы человек делающий валидную верстку понял его за 15 минут, и при этом он не должен позволять этому верстальщику умудриться написать небезопасно.
Если человек пишет небезопасный, следовательно плохой код, то ему не надо давать такие сложные задачи как использование php в шаблонах. Ну и, соответственно, оплачивать его труд по другой ставке.
Вот я и говорю, что в шаблонах пхп быть не должно. :) Зачем ему возможности которые в его руках пойдут только на вред? А простые вещи типа вставить переменную (не на пхп) - пусть пишет. Ему это проще чем программисту еще тратить время разбираться в его верстке.
Просто может я не очень понимаю суть претензий? Ну, например, если вы наняли водителя, едете с ним на своей машине и водитель покорежил бампер и разбил фары о забор, вы же не будете обвинять производителей автомобиля в случившемся? Вопрос в профессионализме водителя, правильно? Точно так же и при создании сайтов, я считаю.
Не очень. Претензия не в том, что бампер помялся - претензия в том, что разработчик машины предусмотрел очень важную для грузовика функцию - разгон до 400км в час, но исключительно на дороге без асфальта. Если бы не было такой возможности, то водила бы не разогнался до такой скорости, и не потерял бы управление... Водила мудак? Может быть... но зачем же было ему давать такую возможность? :)
Вообще я в принципе согласен, что парадигма "фильтруй выход" может оказаться лучше
Да, вот этой парадигмы я придерживаюсь.
Не потому что это "лишь очередной подход", а потому что мне лично (не навязывая никому свою точку зрения) кажется что логичнее использовать в программировании те же приёмы что и в жизни. Например у нас в мыслях есть фигура (для простоты) допустим квадрат. Нам надо его передать другому человеку. И тогда (в зависимости от того кому мы передаём его) мы либо по телефону говорим слово "квадрат" или (если мы хотим эту информацию передать например глухому) рисуем на бумажке четырёхугольник с равными сторонами.... Но мы сначала не рисуем квадрат на бумажке для безопасности если мы по телефону хотим сказать человеку слово квадрат
Не очень. Претензия не в том, что бампер помялся - претензия в том, что разработчик машины предусмотрел очень важную для грузовика функцию - разгон до 400км в час, но исключительно на дороге без асфальта. Если бы не было такой возможности, то водила бы не разогнался до такой скорости, и не потерял бы управление... Водила мудак? Может быть... но зачем же было ему давать такую возможность? :)
:) Ну совершенно необязательно разгонятся до высокой скорости чтобы некисло помять машину.
Или вот например молоток - простейший и удобнейший инструмент. Но любой человек может с помощью него не только вбить гвоздь, но и палец себе отшибить, а то и кинуть в голову кому-нибудь. Но, ведь, выдавая человеку молоток, вы не думаете об этом? :)
Counselor, я сильно задумаюсь, если кто-то выдаст секретарше отбойный молоток, мотивируя это тем что "ну все равно это не дорого, а вдруг понадобится". :)
И если кто-то вздумает в магазине "всё по 1$" охраннику выдать гранатомет, по принципу "ну они у нас на складе есть, пусть стоит, он же не идиот, а так страшнее", и этот охранник потом из этого гранатомета расстреляет воришку и заодно полквартала, то я даже и не знаю кто будет больше виноват - охранник или тот кто дал ему гранатомет :)