IPB

Здравствуйте, Гость ( Вход | Регистрация )

 
Ответить в этой темеОткрыть новую тему
> Может кому и пригодится
monas
сообщение Mar 6 2007, 07:47 PM
Сообщение #1


Newbie
*

Группа: User
Сообщений: 4
Регистрация:
20-February 07
Пользователь №: 1,431



Используя плагин Submitsystem обратил внимание на некоторые его неудобства, а именно: он никак не сообщает пользователю об ошибках ввода, отправки, никак не контролирует ни размер сообщения, ни передаваемые переменные. Обрушить сайт элементарно, достаточно специфически заполнить поля формы. Чем могут воспользоваться юные хацкеры.
Php совсем не знаю, столкнулся совсем недавно (несколько дней назад, когда связался с cms), однако дельфи знаю не понаслышке. По листингу примерно разобрался в синтаксисе и модифицировал код submit.php плагина. Теперь он
1. Проверяет не пусты ли поля и сообщает пользователю
2. Проверяет нет ли в полях неразрешенных символов - тегов и всякой пакости и сообщает пользователю
3. Выкидывает из переменных всякую пакость перед отправкой, в том числе из скрытых (защита от модификации полей формы)
4. Сообщает об ошибках отправки файла
5. Сообщает об ошибках заполнения каптчи
6. Ограничивает ввод в поле текст. В родном плагине можно хоть мегабайт текста засунуть и обрушить мускул
7. Отсекает текст до разумного размера во всех переменных, а то ой-ой что можно с сайтом сотворить
Написано корявенько, не зная хорошо языка трудно красиво написать. Но вроде проверял, все работает без проблем.
Если кому будет полезно, то ОК. Под себя модифицируйте условия, по умолчанию: текстовое поле - до 1000 символов, изменить - в условии в начале и в длинном таком талмуде в середине (переменные body и ss_body). Остальные поля - до 100 символов. Запрешенные символы: имя - запрещено все, кроме кроме букв русского и латинского алфавита, знака "_" (подчерк), пробела и цифр. Мыло - все тоже + @. Параноидально соответствие мыло не проверяем (сам не люблю его забивать, не хочет человек указать реальное мыло, и не надо - просто проверим на разные опасные символы и харе). Имя файла не проверяется, это ничего хацкеру не даст (мы все равно потом выкидываем все лишнее). Заголовок - буквы, цифры и основные знаки препинания. Тело не проверяем, просто потом выкидываем кое-что явно лишнее.
Всем привет
P.S. Надо заменить файл submit.php в папке submitsystem. Плагин переустанавливать не надо. Да не забудьте оригинальный файл на всякий случай сохранить wink.gif

smile.gif Прикрепил измененный вариант, а тот убил. В новой версии маленько поумнее замены переписал (через preg_replace, а то нагородил там портянку, сам еле понял smile.gif ). Также добавил забытую проверку на пустоту поля "сообщение".
Также новый вариант смотрит еще на реферер (если он не пуст - если пуст - то стоит фаер. Outpost правда туда свое сует, но скрипт это предусмотрел). Если реферер чужой, то нафик такой юзер нам не нужен (скорее всего форма грузилась через сохранение на диске-модификацию, либо товарищ юзает плагины подмены реферера - короче мутный). Толку немного, более продвинутые могут телнетом без броузера вообще зайти, но на таких умных мы пофиксим все из строк ниже.
Перечислю замены (Suvoroff, прости, что как-то шибко длинно получается)
Поле заголовок - режется до 100 символов, убивается все, кроме букв, цифр . " - № : ? ,
Поле сообщение - режется до 1000 символов, убивается все, кроме букв, цифр . " - перевода строки ; № : ? , (подчеркивание нафик - опасно, обойдемся)
Поле имя - режется до 100 символов, убивается все, кроме букв и цифр
Поле мыло - режется до 100 символов, убивается все кроме русских и англ.букв, цифр и @ . и () (русские - для появ. русск. доменов)
Поле сайт - режется до 100 символов, убив. все кроме букв, цифр . / : ()
В скрытых полях тоже режем до 100 и колбасим все лишнее (иначе через модификацию полей формы можно запостить)
Не здорово, что много приходится резать, но иначе можно осуществить sql - инъекцию. Если кому то надо что-то добавить в разрешенные, то вставьте нужный символ между палками || в условии if и preg_replace.
Потестите, если кому не лень, а то только написал, плохо соображаю (время 2 часа). Чисто по случайности могло закрасться что-нибудь. Но ошибок явных вроде не вижу пока unsure.gif

blink.gif Маленько изменил. Теперь если referrer пуст - посылаем куда подальше
Прикрепленные файлы
Прикрепленный файл  submit.php ( 18.51 Кб ) Кол-во загрузок: 27
 
К началу страницы
 
+Цитировать Сообщение
Suvoroff
сообщение Mar 6 2007, 10:38 PM
Сообщение #2


Support Staff
***

Группа: Admin
Сообщений: 1,170
Регистрация:
16-July 05
Из: nucleus.com.ru
Пользователь №: 1



THX!
Спасибо то есть smile.gif


--------------------
К началу страницы
 
+Цитировать Сообщение
Helga
сообщение Apr 18 2007, 10:43 PM
Сообщение #3


Advanced Member
***

Группа: User
Сообщений: 78
Регистрация:
14-May 06
Пользователь №: 124



В продолжение моей просьбы http://www.nucleus.com.ru/forum/index.php?...&#entry2227

Бум ждать. А заодно еще пару вопросов по плагину.
1. На Уморе при добавлении новости есть выбор категории. Это опция плагина?
2. А совместить плагин со скриптом, который я выложила очень трудно?
3. Можно сделать так, чтобы после добавления сообщения не появлялись вновь пустые поля, а была хотя бы надпись, что "сообщение принято".

Про 2 и 3 спрашиваю, т.к. сама не бум-бум. Если бы знала, не спрашивала.
Ежели кто сможет сделать, буду очень плагодарна. По-моему эти дополнения будут для всех очень кстати.


--------------------
К началу страницы
 
+Цитировать Сообщение

Ответить в этой темеОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 23rd October 2019 - 02:02 PM
Рецепты - Скачать программы - Scripts