Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> защита сайта - фильтрация символов, подскажите с фильтрацией. Прав ли я? 
V
    Опции темы
Sunvas
Дата 26.9.2008, 00:38 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 8
Всего: 89



Цитата(yurik_l @  26.9.2008,  00:32 Найти цитируемый пост)
Только что проверил:

stripslashes - Удаляет экранирующие бэкслэши. (\' преобразуется в ', и т.д.). Двойные бэкслэши (\\) преобразуется в одиночные(\).


Цитата(bars80080 @  25.9.2008,  20:37 Найти цитируемый пост)
только mysql_real_escape_string,

Стоит учесть одно "но": этой функции нужно передавать идентификатор подключения к БД (если правильно кодить). Кроме этого, можно обойтись функцией mysql_escape_string


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
yurik_l
Дата 26.9.2008, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


тарантиноман



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 17.9.2006

Репутация: 1
Всего: 3



Sunvas, ты последнее сообщение bars80080 читал? Он написал, что функция stripslashes слэши в "http://" удалит. Или я что-то не так понял?
PM MAIL   Вверх
NewDima
Дата 26.9.2008, 04:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: 10
Всего: 12



Teleport, пойми, два самых распространенных взлома сайта это sqlинъекция и межсайтовый скриптинг.
Первая возможна, когда передаешь параметры из _GET[] (_POST[] и т.п.) прямо в sql запрос, к примеру вот так:
Код

$result=mysql_query("select * from `".$_GET['users']."` where ... ", ...);

это будет очень слабый участок кода, так как данными можно будет манипулировать через get. Ты же пользуешься безопасным способом
Код

$query= "SELECT * FROM list";
$query_x= mysql_query($query, $link);

так как запрос для мускула никак не зависит от каких либо данных вообще!
по этому здесь ненужна никакая фильтрация.

единственная проблема (как мне кажется) - это то, что ничего не будет на странице, если вводить адрес без параметра pshow в get запросе, а это не есть гуд.


во, еще про второй метод забыл сказать. ну здесь у тебя вообще проблем нет, так как
ты не выводишь нигде то, что каким-либо образом манипулируется клиентом. к примеру так
Код

echo "...".$_GET['...']."...";

делать (на сколько я знаю), нельзя

Добавлено через 6 минут и 7 секунд
а если таким методом и будешь выводить, то обязательно обрабатывай запрос перед  выводом его части (или полностью) в браузер

Это сообщение отредактировал(а) NewDima - 26.9.2008, 04:34
PM ICQ   Вверх
SelenIT
Дата 26.9.2008, 05:20 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



Цитата(Teleport @  25.9.2008,  16:34 Найти цитируемый пост)
а символы могут представлять опасность, значит их надо фильтровать...

Символы не могут представлять опасность.

Опасность может представлять несоблюдение правил чего-либо. Если носить деньги в открытой сумке, их могут украсть, если не мыть руки перед едой, может быть понос, если заниматься незащищенным сексом с кем попало, можно подцепить вензаразу. Это все опасности, но разные, и меры защиты от каждой должны применяться к месту (о чем говорил выше bars80080). Наивно думать, будто от всех этих напастей поможет заворачивание денег в чисто вымытый с мылом презерватив (или "волшебная фильтрация" от любых порчи и сглаза "опасных символов" на входе;)

База данных может хранит любые символы - опасных символов для нее не существует. А вот опасные запросы существуют - например, вместо "SELECT passw FROM users WHERE id=715" некто пропихнет запрос "SELECT passw FROM users WHERE id=751 OR 1" и получит полный список паролей. Тупо "фильтровать" ввод тут бесполезно - например, если тут просто вырезать OR, то гад может всунуть "...WHERE id=715 OORR 1" и после фильтрации получится как раз то, что ему надо. Нужно не "символы фильтровать", а обеспечить, чтобы независимо от входящих данных запрос получился такого вида, как надо нам. Фактически для этого достаточно соблюдать два простых правила, о которых хорошо написано здесь.

Точно так же HTML может выводить на экран абсолютно любые символы - просто нужно помнить, что < и > в нем ограничивают теги, поэтому чтобы вывести их как символы - нужен htmlspecialchars. А значения атрибутов должны обязательно быть в кавычках, иначе первый же пробел станет началом нового атрибута. И опять же, как и с запросами - нужно четко представлять, HTML какого вида надо построить в результате вывода: что вывести как теги, что - как текст, а что лучше вообще убрать. Тогда и никакой XSS не страшен. И лучше делать это не при вводе данных, а именно при выводе - иначе "раскодировать" исходную информацию, если она вдруг понадобится (скажем, для RSS-фида или WAP-версии сайта) будет ох как проблематично.

Ну а если мы явно видим, что нам шлют данные, совсем не похожие на то, что мы ожидаем для нашей задачи - такой запрос лучше просто послать лесом (редиректнуть на главную страницу, выдать 500-ю ошибку или навсегда забанить по IP - по вкусу, в зависимости от суровости автора сайта;). Но именно отбросить весь "неправильный" запрос. А не заниматься самолечением попытками наобум "оживить" его с помощью какой-то наивной "фильтрации"...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
source777
Дата 26.9.2008, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 2
Всего: 56



Цитата(Teleport @  25.9.2008,  18:00 Найти цитируемый пост)
Если эта защита неправильна, то ведь можно просто пояснить. А не вопросом на вопрос... :(

Ты должен сам понять, что ты бездумно скопировал абсолютно ненужный в том месте, куда ты его поместил, кусок кода. А пока ты это не осознаешь, так и будешь проверки наобум ставить. 
Вот тебе рассказали, что ничего не изменится, если твои проверки убрать, а ты понял почему?  Ведь если не понял, то все кто потратил время на ответы в этой теме, сделали это зря... smile 


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Teleport
Дата 26.9.2008, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 5.7.2008
Где: Прибалтика

Репутация: нет
Всего: 6



2 NewDima
Цитата

единственная проблема (как мне кажется) - это то, что ничего не будет на странице, если вводить адрес без параметра pshow в get запросе, а это не есть гуд.


Насчет этого я знаю smile))))))) просто я выложил только скелет сайта, урезал как можно больше балласта. Чтобы легче было код воспринимать. Спасибо. smile С осатльным вроде все понятно.

2 SelenIT - очень внятно и доходчиво. Большое Спасибо. 

Вопрос такой возник по защите - если ввести www.mysite.ru - то отобразится страница index.php, 
а если ввести www.mysite.ru/img - то отобразится список файлов в данной папке. Как сделать, чтобы список файлов не был доступен никому? Неужели нужно в эту папку запихнуть index.php или index.html? 
А как узнать, что у меня есть такач папка img? На любой рисунок на моем сайте правой кнопкой щелкнуть и выбрать пункт Свойства - там указано, что из папки img.


--------------------
user posted image
user posted image 
PM MAIL   Вверх
teroni
Дата 26.9.2008, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 15.5.2007
Где: Днепропетровск

Репутация: 8
Всего: 22



в .htaccess написать надо Options -Indexes
PM MAIL   Вверх
bars80080
Дата 26.9.2008, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(teroni @  26.9.2008,  11:47 Найти цитируемый пост)
в .htaccess написать надо Options -Indexes 

интресно, а если в апаче отключена поддержка .htaccess ?
как быть?
PM MAIL WWW   Вверх
Teleport
Дата 26.9.2008, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 5.7.2008
Где: Прибалтика

Репутация: нет
Всего: 6



2 source777 - мне дали целых 2 замечательных ответа в последних постах. Вот это мне теперь полностью понятно. Ты, наверное, и вправду хочешь помочь, но из твоих сообщений ничего не ясно. Да, признаю, я ошибся, скопировав эти строки, но неужели у всех все правильно и первого раза правильно получается?И все понятно сразу? Я вот не такой. Я ошибаюсь. И много раз еще ошибусь.

2 bars80080 - и как быть?

Это сообщение отредактировал(а) Teleport - 26.9.2008, 15:12


--------------------
user posted image
user posted image 
PM MAIL   Вверх
bars80080
Дата 26.9.2008, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(Teleport @  26.9.2008,  15:11 Найти цитируемый пост)
2 bars80080 - и как быть?

я не имею тенденций к патъяпкам. если знак вопроса, значит сам спрашиваю. ибо если его никак не побороть, то значит есть всего две альтернативы блоку от .htaccess:
1. размещение файла index.html
2. перенесение всех скрываемых каталогов из видимых директорий (т.е. у тебя картинки размещаются допустим в localhost/www/image/ , а если перенести папку localhost/image будет не видна, зато к ней можно обратиться по файловой системе. правда, как я понимаю, картинки в этом случае через скрипт придётся отдавать, что тоже не есть хорошо)
PM MAIL WWW   Вверх
source777
Дата 26.9.2008, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 2
Всего: 56



Цитата(bars80080 @  26.9.2008,  15:56 Найти цитируемый пост)
размещение файла index.html
вот это как раз правильный вариант(в случае отсутсвия доступа к .htaccess), а самое главное - универсальный.

Добавлено через 4 минуты и 1 секунду
Цитата(Teleport @  26.9.2008,  15:11 Найти цитируемый пост)
Вот это мне теперь полностью понятно. Ты, наверное, и вправду хочешь помочь, но из твоих сообщений ничего не ясно. 
Дело в том, что чужие советы со временем забываются, а то до чего ты своим умом дойдёшь запомнится надолго. А если ты хочешь стать программистом, то ты должен учиться думать самостоятельно, а дать ответ на вопрос сразу, не предоставив человеку возможности ответить самому при помощи наводящих вопросов, на мой взгляд медвежья услуга.



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Teleport
Дата 26.9.2008, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 5.7.2008
Где: Прибалтика

Репутация: нет
Всего: 6



2 source777 - а чтобы было о чем думать самостоятельно - нужен материал. Вот мне сказали - что возможно и как от этого защищаться. Вот теперь есть над чем думать. Куда и чего запихать. А эти наводящие вопросы, в данном конкретном случае - ни к чему не приведут. 

2 bars80080  - понял, спасибо. smile

если я в каждой папке размещу index.html - то список моих файлов не так уж просто будет посмотреть? Я правильно понял?

Это сообщение отредактировал(а) Teleport - 26.9.2008, 17:58


--------------------
user posted image
user posted image 
PM MAIL   Вверх
bars80080
Дата 26.9.2008, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(Teleport @  26.9.2008,  17:56 Найти цитируемый пост)
то список моих файлов не так уж просто будет посмотреть?

вообще нельзя будет просмотреть. ты ведь его видишь без индексного файла только потому, что червер отдаёт его тебе, так как в адресе нет страницы, а если ты его закроешь этой страницей (index.html - страница вызываемая по-умолчанию), то просто не сможешь
PM MAIL WWW   Вверх
Teleport
Дата 26.9.2008, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 5.7.2008
Где: Прибалтика

Репутация: нет
Всего: 6



2 bars80080 - вообще нельзя будет? А можно ли в строке броузера написать код, который просто обойдет этот index.html ? И выдаст страницу с файлами? Не знаю глупо ли звучит вопрос, но дело в том, что я что-то такое слышал. Может путаю...


--------------------
user posted image
user posted image 
PM MAIL   Вверх
source777
Дата 26.9.2008, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 2
Всего: 56



Цитата(Teleport @  26.9.2008,  17:56 Найти цитируемый пост)
а чтобы было о чем думать самостоятельно - нужен материал. 
тебя на Google забанили что ли? Только на этом форуме всё это уже десятки раз обмусоливалось... 

Цитата(Teleport @  26.9.2008,  17:56 Найти цитируемый пост)
А эти наводящие вопросы, в данном конкретном случае - ни к чему не приведут. 
А вот это уже реально плохо для тебя...



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0664 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.