![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| t77 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Доброе время суток.
Нужен совет опытных программистов... Имеется аппликация с бегущей строкой текста вверхней части. Пользователь имеет возможность редактировать текст той самой бегущей строки. Мной было обнаружено, что если ввести что то вроде:
То выскакивает алерт... Или если ввести:
То вместо текста появляется текстовое поле... Короче говоря нельзя допускать, чтобы такое происходило. Тоесть, по большому счету я допускаю пользователю вводить только текст. Теперь, что касается решения данной проблемки... Думаю с помощью регулярного выражения, тупо удалять все ЧТМЛ теги вместе с их содержимым... Вопрос 1 - Может, что забыл предусматреть ?? Вопрос2 - Как вообще принято в веб, правильно решать подобные проблемы ?? Заранее благодарю. |
||||
|
|||||
| Wolf1994 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 5.10.2004 Репутация: 1 Всего: 29 |
|
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
имеется ввиду вводимый текст отправляется на сервер и становится доступным всем пользователям сайта?
это надо решать средствами сервера, на javascript при желании всё можно подделать |
|||
|
||||
| brother79 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 471 Регистрация: 18.8.2009 Репутация: 1 Всего: 6 |
http://php.net/manual/en/function.strip-tags.php
Там и сама ф-я и куча примеров с регулярками. Добавлено через 47 секунд Только не понятно почему пишешь в форум по js если вопрос по пхп |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
||||
|
||||
| t77 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Причем тут ПЧП ???
Я хочу сделать это на клиенте - JavaScript. |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
имеется ввиду вводимый текст отправляется на сервер и становится доступным всем пользователям сайта?
или пользователь вводит текст только для себя? Добавлено через 58 секунд t77, поменяй клавиатуру с чёрными буковками на клавиатуру с чёрными и красными |
|||
|
||||
| segrey |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 26.12.2006 Репутация: нет Всего: нет |
Eсли жабаскрипт, то пиши в текст ноду вместо innerHTML.
типа того Это сообщение отредактировал(а) segrey - 6.1.2010, 07:00 |
|||
|
||||
| t77 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
bars80080, привет...
Не совсем понял чем тебе не нравиться текст и причем тут клавиатура... Но, что касается вопроса:
Да. Именно это то, что происходит. |
|||
|
||||
| brother79 |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 471 Регистрация: 18.8.2009 Репутация: 1 Всего: 6 |
Я подумал, что поэтому:
Но всёравно не понятно, если
То смысл вообще в js? Это всё гораздо проще, удобней, а главное безопасней сделать на сервере, на том языке, на котором пишешь Но если всётаки js то, тут:
Есть примеры регулярок как сделать через регулярки |
||||||
|
|||||||
| bars80080 |
|
||||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
не совсем корректно. никакая javascript проверка не сможет заменить серверной. какой бы скрипт на js не был написан, он всё равно может быть обойдён. я помнится так рекламу обходил. на некоторых сайтах, где можно выкладывать свои картинки, прежде чем не просмотришь тонны рекламы, сама картинка не покажется. а они всё сделали на javascript, мне осталось только дербанилку написать, которая выуживала ссылку и всё js - пустое, его надо использовать для красоты и не более
ну, не угадал, думал у тебя только чёрные буковки на клаве |
||||
|
|||||
| t77 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Вот такая функция получилась:
Принимаются замечания... |
|||
|
||||
| segrey |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 26.12.2006 Репутация: нет Всего: нет |
ужс какой
|
|||
|
||||
| t77 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
segrey, что такого ужасного ты увидел??
Понятно, что не идеально но это работает! Я как ты заметил не ограничиваюсь тем, что оно работает а напротив обращаюсь сюда на форум. Ибо хочется узнать мнение более опытных и профи и если есть ошибки то не повторять их в будущем. Так, что если можешь предложить что то лучше, буду признателен. Если не имеешь лучшего решения, то не нужно писать ерунду, лучше помолчи Все когда то начинали с чего то. На ошибках учишься! |
|||
|
||||
| segrey |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 26.12.2006 Репутация: нет Всего: нет |
t77 тут уже отписали что нет смысла вырезать теги, если данные отправляются на сервер. А не отправляются и формирование текста происходит на клиенте и его нужно безопасно отобразить, есть более простое решение через текстовую ноду.
Если всё же горит теги вырезать, то можно было пройти по ссылке, которую дал товарищ brother79 и почитать там комменты с примерами реализаций. |
|||
|
||||
| t77 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Я ходил туда и ничего нового там не увидел.
И вообще не нужно давать примеры на PHP. Я его не знаю! Приведенный мной код удаляет определенные...Это хорошо но не совсем то, что нужно. Вообщем на данный момент могу точно сформировать задачу. Во первых это нужно сделать на клиенте однозначно. Я предпочитаю JavaScript. Во вторых мне необходимо проверить вводимый пользователем текст на наличие каких-либо тегов. В случае если в тексте имеются тег или скобка тега то: 1. поднимаем флаг. 2.Соответственно данному флагу сообщаем пользователю, что введеный текст не корректный. 3. Удаляем введеный пользователем текст. 4. возвращаем курсор на текстовое поле и ждем пока пользователь введет новый текст. Так вот теперь возникает вопрос, как проверить стринг на наличие каких либо тегов ?? Просто проверить(тоесть функция проверяет стринг и возвращает true или false). Как это сделать?? |
|||
|
||||
| t77 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Получилось решить данную задачу в пару строк...
Скажите пожалуйста можно ли обойти данную валидацию ?? Принимаются замечания. |
|||
|
||||
| Amphiluke |
|
|||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 39 Всего: 112 |
Какой смысл в использовании флага i в регулярных выражениях />/ и /</ ?
И мильон ложных срабатываний. В этой строке есть теги? «ваоыоыоышо<<<><<<drgegieijeoi» Это сообщение отредактировал(а) Amphiluke - 7.1.2010, 12:09 |
|||
|
||||
| Wolf1994 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 5.10.2004 Репутация: 1 Всего: 29 |
|
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
||||
|
||||
| t77 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
bars80080 , спасибо за ваше мнение конечно... Но дело в том, что прежде чем введенный пользователем текст пошлется на сервер необходимо сделать валидацию ввода на клиенте. Почему нет ? Каким образом можно обойти данную проверку на клиенте ? Amphiluke , вы имеете ввиду, что нет смысла включения флага учёта регистра, так как на скобки(< и >) это никак не влияет...?? Я правильно вас понял ?? Wolf1994, прикольно, спасибо. Но, в чем преимущество вашего варианта ответа ?? Ведь если текст будет большим, то использование регулярных выражений предпотчительней, так как регурярки работают быстрее. |
|||
|
||||
| Wolf1994 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 5.10.2004 Репутация: 1 Всего: 29 |
Преимущества нет. Просто чуть короче условие.
По предмету спора: валидация на клиенте не защитит от хакера, но немного сэкономит ресурсы сервера на обычных посетителях. |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
в общем случае достаточно открыть файербаг и поменять всё что нужно. в самом закрученном варианте придётся посоображать, но это всего лишь вопрос времени. на js невозможно построить защиту, по той простой причине, что js находится в руках клиента. найти нужный запрос, заменить где надо параметры или даже переписать функции, и всё, понеслись на сервер те данные, которые нужны кулхацкеру
валидацию на клиенте можно сделать, и обычно это полезно экономией ресурсов сервера и трафика. но никакая проверка на js не сможет заменить проверку на сервере Добавлено через 3 минуты и 12 секунд да простой пример, тут есть звёздочки над каждым постом для оценки. в них есть механизм запрета повторного голосования и запрет от голосования за свой пост. всё на js. но это всего лишь внешняя атрибутика. на сервере есть при этом обязательная проверка, которая и служит единственным верным ограничителем. даже если ты поломаешь механизм нажимания этих звёздочек, всё равно проголосовать дважды ты не сможешь. твой голос просто не учтётся |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |