- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Раз уж вы развенчали мою "интригу"
Звиняйте, не подумал:):):)
---------- Добавлено 11.12.2016 в 20:05 ----------
Вы знаете... я встречал НЕСКОЛЬКО персонажей которые считали что то что их сливают и т.п. это нормальная ситуация.
Стандартные ответы на сообщения об уязвимостях:
- Да кому мой сайт нужен
- Ничего страшного, восстановим из бэкапа
и т.д. и т.п.
Могу Вам рассказать, что таких персонажей - едва ли не каждый первый
Стандартные ответы на сообщения об уязвимостях:
- Да кому мой сайт нужен
- Ничего страшного, восстановим из бэкапа
и т.д. и т.п.
Ой! Я с этим завязал еще в конце 90-х начале нулевых.
Друг мой скинул одному провайдеру информацию по найденной им уязвимости, и предложил им на символическую плату провести им аудит всего. Т.е. всё что нашел скинул бесплатно.
В ответ начали приходить сообщения что кто-то выносит его прокси (в смысле запросы приходят и т.п.). К одному из провов в цепочке прилетела абуза от того "взломанного" провайдера. Админ провайдера по некоторым признакам опознал моего друга, и запутал следы, а другу моему надавал щелбанов, за то что тот чуть не спалился... У провайдера вышел анонс мол "мы вычислили хакера который нас взломал, сейчас ловим"....
Полноценный аудит он провел.
Крупный провайдер с большим пулом диалапа по стране...
На всех радио-базарах, форумах и т.п. можно было купить дискетку с эксплоитом.
Продано было на суммы на несколько нулей больше чем просилось за аудит.
Ущерб? А кто же его посчитает? Тем более там решето было. Не один он ломал...
---------- Добавлено 11.12.2016 в 19:23 ----------
Вру. Завязал я не после этого.
Завязал я в 2003-м. Когда сообщил работодателю что в системе учета дыра.
Разработчик сказал большое спасибо, доработал баги и т.п.
Шеф меня вздрючил и запретил заходить в помещение где комп стоял.
Ага.
Только 50% времени контролировать это было некому.
Ну т.е. напарник спит, в клубе только мы вдвоем. И дело даже не в том что напарника я знал уже пять лет как)))
Благодарю за то что ткнули носом в ошибку.
Но вопрос такой:
Если условие такое, что GET параметр обязательно должен являться цифрой, в противном случае подключение к базе не происходит как и не осуществляется эта строчка:
$query = "SELECT region, id, city FROM city where region =".$_GET['countryCode'];
Но вопрос такой:
Это неверный вопрос.
Вы находитесь в рамках устаревших парадигм.
Фильтровать ввод это хорошая мысль. Для 2005-2007 годов.
Хорошо что вы до нее додумались, но плохо что вы хотите на ней ехать.
Не подумайте неправильно - фильтровать ввод нужно (не всегда, но нужно).
Просто именно для этой проблемы это не то решение.
В конкретном случае вам нужен PDO и его параметризированные запросы.
И вопрос инъекции отпадает сразу во всем проекте. Ну не совсем уж отпадает, но становится сильно затруднителен и без эксплуатации набора других ошибок - невозможным. Попутно ЗНАЧИТЕЛЬНО упрощается вопрос переноса вашего скрипта на другие СУБД, например SQLite или Постгри. Всего скрипта а не только этой странички.
Далее, если вы просто пойдете в Википедию, и почитаете про DRY, и посмотрите на тот код что у вас получился, то у вас возникнет вопрос.
И в ответ на этот вопрос вы захотите иметь что-то вроде $db->sql($sql,['param1'=>'param1,'param2'=>'param2']);
Потом будет SOLID, MVC (Толстые. Уродливые. Контроллеры. ФУУУУУУ!).
Ну и сразу вернемся к работе с базой...
Каждый раз писать Селект? Да еще с JOIN и т.п.?
Может хочется что-то вроде
$country = $allCountry->findOne($countryId);
if($country) {
$countryCity = $country->citys->findAll();
$currentCity = $country->citys->findOne($cityID);
$currentFilial = $currentCity->findOne($filialId);
}
тогда читаем про ActiveRecord.
Или вот есть у вас простая в сущности задача. Рутинная до безобразия.
Форму ввода создать. Ну скажем заказ какой принять от пользователя.
В форме будет не очень много полей. Скажем 30.
Разные. Это и да/нет, и текстовые, и цифровые, и загрузить и выбрать картинку, и текст с оформлением (с редактором типа Тини или ЦКЕдитора) ну и т.п.
Ну банальный заказ.
Выводим поля соответствующих типов.
Выводим к ним подписи, подсказки (вопросики такие, с всплывающим текстом при наведении мышки), плейсхолдеры и т.п.
У каждого поля пару проверок вроде того цифровое ли оно, обязательное ли, проверка уникальности (запрос в базу), максимальная/минимальная длина и т.п.
Ну примерно 50 проверок на всю форму.
К каждому полю надо вывести сообщение об ошибке, если оно неправильно написано..
Конечно же подписи у всего этого должны быть на разных языках, как и сообщения об ошибках и т.п. Т.е. в отдельных файликах лежат все строки которые нам нужны, и можно сделать новый файлик с именем другого языка, не колупая код.
Как думаете как много кода для этого понадобится?
В принципе у каждого код будет разным, но лично я пишу вот так:
Ну и получение этой самой $model и ее обработка выглядят примерно так:
Здесь мы выводим форму в браузер (вызываем код который приведен выше), разбираем данные формы, проверяем ее на правила, если она заполнена правильно, то сохраняем и редиректим куда нужно, если нет, то отдаем ошибки той форме что была приведена выше, и опять выводим.
Плюс еще миллион и маленькая тележка других действий.
Например вы могли заметить чуть выше непонятную строчку <?=s()->xsrf()->field ?>.
Эта строчка выводит специальный код, а в s()->post()->getModel($this->boxName); мы не только получаем данные из $_POST, разбираем их и т.п., но и проверяем правильность этого кода.
А иначе что? А иначе XSRF. У вас ведь наверняка есть XSRF. Вот прям сейчас пойдете. Прочитаете. И - опа! Ведь есть же. Ну признайтесь? :)
Ну вот мы тут насоветовали на страницу, потом еще на одну. Вы всё поняли. Даже PDO используете.
Чувствуете себя в безопасности, а тут раз и XSRF :)))
И не говорите "да кому я нужен, кто меня ломать будет". Мы это уже оборжали выше.
Поймите простую вещь.
Всё что вы напишите будет криво, небезопасно и бесполезно ибо до Вас это уже десять раз написали.
Да, Вы научитесь. Да, это нужно. Но не делайте на таком коде реальные сайты.
Возьмите лучше Вордпресс. Он ужасен в плане кода, но там уже хоть какая-то основа есть.
А если чисто поучиться, и потом сесть за что-то взрослое, то дерзайте.
Но Ваша задача с филиалами а до этого с картинкой уж больно похожа на то, что вы это в реальном проекте используете (ужас, ужас)...
Это неверный вопрос.
Вы находитесь в рамках устаревших парадигм.
Фильтровать ввод это хорошая мысль. Для 2005-2007 годов.
Хорошо что вы до нее додумались, но плохо что вы хотите на ней ехать.
Не подумайте неправильно - фильтровать ввод нужно (не всегда, но нужно).
Просто именно для этой проблемы это не то решение.
В конкретном случае вам нужен PDO и его параметризированные запросы.
И вопрос инъекции отпадает сразу во всем проекте. Ну не совсем уж отпадает, но становится сильно затруднителен и без эксплуатации набора других ошибок - невозможным. Попутно ЗНАЧИТЕЛЬНО упрощается вопрос переноса вашего скрипта на другие СУБД, например SQLite или Постгри. Всего скрипта а не только этой странички.
Далее, если вы просто пойдете в Википедию, и почитаете про DRY, и посмотрите на тот код что у вас получился, то у вас возникнет вопрос.
И в ответ на этот вопрос вы захотите иметь что-то вроде $db->sql($sql,['param1'=>'param1,'param2'=>'param2']);
Потом будет SOLID, MVC (Толстые. Уродливые. Контроллеры. ФУУУУУУ!).
Ну и сразу вернемся к работе с базой...
Каждый раз писать Селект? Да еще с JOIN и т.п.?
Может хочется что-то вроде
$country = $allCountry->findOne($countryId);
if($country) {
$countryCity = $country->citys->findAll();
$currentCity = $country->citys->findOne($cityID);
$currentFilial = $currentCity->findOne($filialId);
}
тогда читаем про ActiveRecord.
Или вот есть у вас простая в сущности задача. Рутинная до безобразия.
Форму ввода создать. Ну скажем заказ какой принять от пользователя.
В форме будет не очень много полей. Скажем 30.
Разные. Это и да/нет, и текстовые, и цифровые, и загрузить и выбрать картинку, и текст с оформлением (с редактором типа Тини или ЦКЕдитора) ну и т.п.
Ну банальный заказ.
Выводим поля соответствующих типов.
Выводим к ним подписи, подсказки (вопросики такие, с всплывающим текстом при наведении мышки), плейсхолдеры и т.п.
У каждого поля пару проверок вроде того цифровое ли оно, обязательное ли, проверка уникальности (запрос в базу), максимальная/минимальная длина и т.п.
Ну примерно 50 проверок на всю форму.
К каждому полю надо вывести сообщение об ошибке, если оно неправильно написано..
Конечно же подписи у всего этого должны быть на разных языках, как и сообщения об ошибках и т.п. Т.е. в отдельных файликах лежат все строки которые нам нужны, и можно сделать новый файлик с именем другого языка, не колупая код.
Как думаете как много кода для этого понадобится?
В принципе у каждого код будет разным, но лично я пишу вот так:
Ну и получение этой самой $model и ее обработка выглядят примерно так:
Здесь мы выводим форму в браузер (вызываем код который приведен выше), разбираем данные формы, проверяем ее на правила, если она заполнена правильно, то сохраняем и редиректим куда нужно, если нет, то отдаем ошибки той форме что была приведена выше, и опять выводим.
Плюс еще миллион и маленькая тележка других действий.
Например вы могли заметить чуть выше непонятную строчку <?=s()->xsrf()->field ?>.
Эта строчка выводит специальный код, а в s()->post()->getModel($this->boxName); мы не только получаем данные из $_POST, разбираем их и т.п., но и проверяем правильность этого кода.
А иначе что? А иначе XSRF. У вас ведь наверняка есть XSRF. Вот прям сейчас пойдете. Прочитаете. И - опа! Ведь есть же. Ну признайтесь? :)
Ну вот мы тут насоветовали на страницу, потом еще на одну. Вы всё поняли. Даже PDO используете.
Чувствуете себя в безопасности, а тут раз и XSRF :)))
И не говорите "да кому я нужен, кто меня ломать будет". Мы это уже оборжали выше.
Поймите простую вещь.
Всё что вы напишите будет криво, небезопасно и бесполезно ибо до Вас это уже десять раз написали.
Да, Вы научитесь. Да, это нужно. Но не делайте на таком коде реальные сайты.
Возьмите лучше Вордпресс. Он ужасен в плане кода, но там уже хоть какая-то основа есть.
А если чисто поучиться, и потом сесть за что-то взрослое, то дерзайте.
Но Ваша задача с филиалами а до этого с картинкой уж больно похожа на то, что вы это в реальном проекте используете (ужас, ужас)...
Была конечно мысль обратиться к программисту, но сейчас эта "была" переменилась в "хочу".
Во вы загрузили товарища))) От простенького вопроса по логике работы алгоритма запугали его кросплатформенными иньекциями.
Во вы загрузили товарища))) От простенького вопроса по логике работы алгоритма запугали его кросплатформенными иньекциями.
Не запугали. Просто проект который делаю, возможно реально вызовет интерес у конкурентов, года через два точно.
А я не хочу тратить время на глубокое изучения языка, в том время как могу обратиться к более квалифицированному специалисту, считаю это нормально и правильно.
Специалист специалистом, но... уберите всё не нужное в "вторую очередь".
Выбор филиалов это важно или можно их списком сделать?
Чисто статья и чисто поиск по ней?)
Аякс это важно? Ведь сделав смену страницы после каждого выбора, вы бы упростили логику и сами бы не запутались. Программист не запутается, но час времени сэкономит. Не в том дело что обсуждаем, а в общем подходе. Сократите еще больше. Наверняка в других местах излишком тоже много.
У меня друг пятый год "запускается". Пятая версия сайта. Только выкатили версию под сео, вот только в этом месяце реальный траф пошел, со следующего месяца начинается монетизация. Пятый год! Дорабатывать! Функционал! Проект крутой, да, но блин!
Специалист специалистом, но... уберите всё не нужное в "вторую очередь".
Выбор филиалов это важно или можно их списком сделать?
Чисто статья и чисто поиск по ней?)
Аякс это важно? Ведь сделав смену страницы после каждого выбора, вы бы упростили логику и сами бы не запутались. Программист не запутается, но час времени сэкономит. Не в том дело что обсуждаем, а в общем подходе. Сократите еще больше. Наверняка в других местах излишком тоже много.
У меня друг пятый год "запускается". Пятая версия сайта. Только выкатили версию под сео, вот только в этом месяце реальный траф пошел, со следующего месяца начинается монетизация. Пятый год! Дорабатывать! Функционал! Проект крутой, да, но блин!
Я б туда еще несколько полей воткнул + создание пользователем своих форм, для клиентов.
То есть орг вводит сколько будет встреч(каждая встреча имеет ограниченное кол-во участников), а уже сами участники выбирают(radio) на какую именно запишутся.
А то реально, иногда читаешь и столько вопросов рождается серьезных, поэтому полей тут ровно столько, сколько должно быть. Кстати в примере конечно не полная форма. В оригинале около 10+/- полей.
Аналог гуглоформ?)
Тоже хочу сделать, но пока руки не дошли. Так что у меня пока все формы только через админа создаются.