![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
t77 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Доброе время суток.
В очередной раз обращаюсь на форум за помощью в построении регулярного выражения. Уж очень тяжело они мне даются... Особенно "Метасимволы". Имеется "textarea", куда пользователь может вводить все что угодно. Необходимо построить регулярку, которая очищает введеный пользователем, текст от всех ненужных символов. Под ненужными символами, подразумевается все, что не является текстом. Можно только "Plain Text". Нужна помощь. |
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
|
|||
|
||||
t77 |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Пользователю предоставляется возможность отправить сообщение администратору сайта.
Данная регулярка должна решить проблему безопасности. Под безопасностью подразумевается проверка скрипта на наличие тега скрипта, любого вида кода. Включительно ЧТМЛ... В случае если имеется тег скрипта
или html код, регулярка должна обнаруживать это дело и удалять. Тоесть удаляем все что начинается с открытия скобки
и до закрытия скобки
Оставляем только обычный текст со знаками припинания... Разрешаем пользователю вводить: 1. обыный текст 2. цифры 3. фопросительный и восклицательный знак 4. запятые, точка, двоеточие, точка с запятой. Может я что то упустил из виду... Что еще может быть небезопасным для БД и сервера...?? |
||||||
|
|||||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
буквы и цифры, к примеру такие:
и не смотри что там кавычка, в ФФ даже не надо устанавливать специальных плагинов. лезешь в инспектор, меняешь введённое выражение и отсылаешь на сервер. оп-па, SQL-injection! никогда задача серверной безопасности на клиенте не решается. если нельзя вставлять тэги, то на выдаче текста просто ставится обрабатывающая функция. выделенная или написанная своими руками. к примеру, чтобы обезопасить пользователя от XSS-атак на php весь пользовательский выводной текст пропускают через htmlspecialchars() всё чтобы защитить базу от sql-инъекции, для php-mysql весь вставляемый текст пропускают через mysql_real_escape_string() всё ни в одном случае ни один символ не вырезается. что пользователь ввёл, то ему и вернётся. но в защищённом для системы виде какова вообще изначальная задача? |
|||
|
||||
t77 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Оппа-ана
![]() Согласен, что такое правильнее делать на сервере, но тем не менее хотелось на первой стадии, при вводе пользователем текста, проверить контекст и сообщить ему о том, что введеный текст не проходит валидацию... А дальше, на сервере прежде чем сохранять в БД, профильтровать той же регуляркой и выполнить соответствующие действия. Объясните пожалуйста, что означает строка:
Как она может навредить ? Что она делает ? |
|||
|
||||
bars80080 |
|
||||||||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
ну, регулярка вот, чем не устраивает? осталось просто сравнить старый текст с полученным после replace. если не равен, то алерт
обычный запрос в наипопулярнейшей базе mysql:
если на сервере нет никакой обработки входящих данных, хотя бы такой: $login = mysql_real_escape_string($login); $password = mysql_real_escape_string($password); то злодей введя в поле пароля a" OR "1"="1 получит следующий запрос:
что выдаст какой-то результат и пользователь будет наверняка авторизован на одно только хочу обратить внимание. прежде всего задайтесь вопросом: что вы хотите сделать зачем, к примеру, вообще обрезать какие-то символы? почему логин или пароль не может состоять из #$%*" ? их вполне можно безопасно хранить в базе. их также можно безопасно показывать пользователю, в том числе и <script>. ведь вы же сейчас видите этот тег <script>, а он не встроился в страницу как кусок кода, здесь это обычный текст. вводимые мной данные не были отфильтрованы, их просто обезопасили, в данном случае обезопасили вывод функцией htmlspecialchars() я понимаю, если требуется ввести имя. но всё равно надо понимать, что мы делаем и зачем |
||||||||
|
|||||||||
t77 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Имеется Ли альтернатива , приведенных вами функций на JAVA ?
|
|||
|
||||
t77 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Гугль выдал Приличное количество самых разных ответов на мой вопрос. Так что спасибо вам за правильную мысль и подход. Интересно очень.
|
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
это не java, это php и mysql, что написано в заголовках кода
|
|||
|
||||
t77 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Функция, написанная на JavaScript, алтернатива htmlspecialchars() -PHP.
|
|||
|
||||
HoTMetaL |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 15.4.2007 Репутация: нет Всего: 4 |
t77, зачем тебе геморрой с проверкой на стороне клиента? Всё равно НЕОБХОДИМА защита на стороне сервера. Пусть сервер обрабатывает данные, а результат проверки отправляет клиенту. Типа"сообщение добавлено" или "Пшёл вон отсюда, взломщик!" Ибо кому надо, тот легко напишет своего клиента, в котором не будет этой проверки на скрипты и тут уже всё звисит от грамотно построеного сервера.
|
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |