![]() |
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]() ![]() ![]() |
|
begin |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 415 Регистрация: 16.5.2007 Репутация: нет Всего: нет |
Подскажите, как с помощью регулярных выражений удалить из текстовой переменной такие символы и их сочетания:
Извините, что так много, но просто хочу сделать хорошо защищенный сайт. Сразу оговорюсь, функции mysql_real_escape_string и htmlspecialchars на мой взгляд недостаточно очищают данные от пользователя. А если я смогу вычищать все выщеприведенные символы, то так надеюсь защититься и от инъекций, и от XSS. Очень надеюсь на вашу помощь ![]() Это сообщение отредактировал(а) begin - 28.7.2007, 17:19 |
|||
|
||||
SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 8 Всего: 401 |
begin, Вы еще забыли предусмотреть защиту от mail injection (имхо, куда серьезнее, чем sql-таковая) и от команд ОС ;)
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
WolfON |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 604 Регистрация: 19.7.2004 Репутация: нет Всего: 8 |
SelenIT, и все это решается только грамотным контролем поступающих от пользователя данных
![]() begin,
|
|||
|
||||
SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 8 Всего: 401 |
begin, имхо, Вы встали на тупиковый путь. Во-первых, Вы создадите массу проблем честным юзерам - подумайте, что будет, если кто-то из них захочет разместить на Вашем ресурсе какую-нибудь полезную статью про SQL;) ? Во-вторых, как бы Вы не расширяли Ваш "черный список", всего на свете Вы не учтете. Не лучше ли стремиться к тому, чтобы ввести можно было любые данные (сами по себе данные безопасны), но на сайте они всего лишь тупо отображались, а не интерпретировались?
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
begin |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 415 Регистрация: 16.5.2007 Репутация: нет Всего: нет |
Так ведь мне нужно нечто большее, чем просто тупое ![]() ![]() Кстати, на моем сайте, не будет статей по программированию.. ![]() WolfON, а там, где вы поставили многоточие, мне нужно вставить остальные искомые символы? Так?
Правда не понял вот что: почему вы взяли знак процента в одинарные кавычки, а символ переноса - в двойные? Как делать правильно? И в какие кавычки мне брать знак апострофа? |
||||
|
|||||
WolfON |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 604 Регистрация: 19.7.2004 Репутация: нет Всего: 8 |
begin, от sql-injection помагает экранирование кавычек и спец-символов, так как SQL-код, находящийся внутри строки (в кавычках) не будет выполнен интерпретатором.
В двойные кавычки я взял \n и \r по тому, что в одинарных кавычках они будут строкой '\n' и строкой '\r', а в двойных будут представлены интерпретатором как знак переноса строки и знак возвращения каретки. Подробнее: http://php.su/learnphp/datatypes/?string#single |
|||
|
||||
SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 8 Всего: 401 |
Ну и заносите - как есть, в виде обычной строки... Чем, кстати, не устроила mysql_real_escape_string?
Одним махом, имхо, не пойдет. SQL-иньекции и XSS происходят в разных местах и в разные моменты: первые - на сервере при подстановке полученных данных в запрос к базе, вторые - в браузере, при отображении данных из базы и не только. Соответственно, защищаться нужно разными методами и в разное время. Вы же не для одного сайта движок пишете, а как бы универсальный... кто знает, где его предстоит использовать в следующий раз? Кстати, английские слова WHERE, OR и многие другие могут встречаться не только в компьютерных текстах... ![]() -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
begin |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 415 Регистрация: 16.5.2007 Репутация: нет Всего: нет |
Да, возможно и не стоит вычищать все переменные в одном месте. Нужно еще все обдумать.
И я все же не до конца понял насчет того регулярного выражения: в какие кавычки мне брать знак апострофа, если я, все же, хочу удалить его таким способом? А насчет слов where, or и т.д., я хочу удалять только те из этих слов, перед которыми стоит апостроф. Ведь без него, насколько я понял, инъекцию невозможно будет совершить... Или возможно? Если возможно, то нужно удалять их все таки, а если невозможно - то удалять только апостроф. Что скажете? |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Тексты | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |