Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Несколько вопросов о безопасности

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (3): [1] 2 3 »   

> Без описания
teddy
Отправлено: 26 Июня, 2013 - 23:30:52
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Здравствуйте. Интересует несколько вопросов по поводу безопасности. А именно:

1. Безопасное использование сессии / защита от кражи session_id из куки.Вопросы:
- Насколько я знаю, если использовать ini_set('session.cookie_httponly', 1); то передача сессионных куки будет проходить только по http и браузер session_id не получит и это никаким образом не нарушит механизм работы сессии. Вопрос: может ли нанести ущерб такой способ? Если да, то какой и почему?

- Нужно ли ini_set('session.cookie_httponly', 1); указывать во всех файлах, где есть session_start() ? Или только в том файле, где происходит авторизация пользователей?

- Если я отфильтрую числовые данные к примеру при помощи abs((int)$_GET['id']) или вместо int, intval, либо если это строка, то mysql_real_escape_string - стоит ли использовать ini_set('session.cookie_httponly', 1); ? Это я спрашиваю потому, что данная фильтрация исключает к примеру XSS атаки что на сколько я понимаю запрещает использование левых скриптов, в данном случае скриптов для кражи кук.

2. Работа с файлами.
Вопросы:
- Как можно запретить на уровне .htaccess доступ к существующим файлам/директориям на сервере? Что бы например когда пользователь писал прямой путь site.ru/path/config.php ему показывалась 404 ошибка? Я пробовал делать так: называть файлы на .ht* но в таком случае сервер дает ответ, что такой файл существует, но доступ к нему запрещен. А мне нужно сделать так, что бы создалось впечатление, что такого файла не существует но на самом деле он есть. Т.е запустить 404 ошибку.

- Как запретить загрузку файлов на сервер, если типы загружаемых файлов не соответствуют требованиям. Например хочу позволять загружать только фотки, достаточно ли проверки на тип загружаемого файла? Если нет, то что нужно делать в этом случае?

Немного о кешировании:
Вопросы:
Кеширование на стороне клиента

Как сделать так, что бы кешировалось только то, что было обновлено? А если обновлений на сайте нет, то браузер уже
не посылает запрос к серверу а поднимает информацию из кеша. А запросы к серверу чтоб слались только в случае если
на сайте появилось что то новое. header("Cache-control: no-cache"); - будет ли этого достаточно? На сколько это оптимально?
есть ли более приемлимые варианты?

Кеширование SQL запросов
Оно происходит автоматически? Если да, то в каком объеме? Как происходит очистка такого кеша? Можно ли и нужно ли как то
влиять на это кеширование самостоятельно? Или MySQL сам всё без меня сделает?

Так же интересует вопрос по поводу подготовленных запросов, зачем они нужны? Какую пользу они могут принести?
Только слышал что база уже не анализирует запрос а сразу его выполняет - где это применимо?


Буду рад послушать ваши советы и подсказки. Спасибо заранее, надеюсь вы мне поможете )

(Отредактировано автором: 26 Июня, 2013 - 23:44:45)

 
 Top
vanicon
Отправлено: 26 Июня, 2013 - 23:45:51
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




1. Делаете закрытым куку от скриптов, если скрипты не взаимодействуют с ней, обычно сессионную куку делает закрытой для скриптов.
Делать это нужно 1 раз, в единой точки входа, или можно в php.ini
2. Если нужны тока картинки, то подойдет getimagesize, а если другие какие файлы то смотрите http://www.php.net/manual/ru/intro.fileinfo.php
Насчет кэширования sql запросов, mysql имеет внутренний кэш, поэтому ничего кэшировать в вашем случае не надо, когда будет надо познакомитесь с мемкэшом...
Подготовленные выражения нужны для того что бы каждый раз не отправлять sql запрос целиком, а отправлять тока нужные параметры для определенного запроса, так сказать экономия трафика...


-----
Так было, так есть и так будет
 
 Top
teddy
Отправлено: 26 Июня, 2013 - 23:52:16
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




vanicon пишет:
Делаете закрытым куку от скриптов, если скрипты не взаимодействуют с ней, обычно сессионную куку делает закрытой для скриптов.

Это как? что то типа setcookie('name', 'value', 'time', 'path', 'site.ru', '0', true/false); ? Если да, то зачем? Я же не с куками работаю, а с сессиями, и при помощи ini_set('session.cookie_httponly', 1); я просто вырубаю передачу в куки браузера session_id и сплю спокойно... ничего не понимаю...

vanicon пишет:
поэтому ничего кэшировать в вашем случае

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

vanicon пишет:
а отправлять тока нужные параметры для определенного запроса, так сказать экономия трафика...

Тоесть? Я всегда при составлении SQL запросов отправляю только нужные мне параметры, зачем мне делать ненужную выборку или добавление записи? ))
(Добавление)
Не обязательно отвечать на все вопросы и сразу... если кто знает хотя бы часть ответов на мои вопросы, прошу отписаться...

Замечу, что именно нужны ответы на мои вопросы, а не сразу предлагать свои решения Улыбка Спасибо за понимание, надеюсь на вас

(Отредактировано автором: 27 Июня, 2013 - 00:59:09)

 
 Top
vanicon
Отправлено: 27 Июня, 2013 - 01:17:21
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




teddy пишет:
Это как? что то типа setcookie('name', 'value', 'time', 'path', 'site.ru', '0', true/false); ? Если да, то зачем? Я же не с куками работаю, а с сессиями, и при помощи ini_set('session.cookie_httponly', 1); я просто вырубаю передачу в куки браузера session_id и сплю спокойно... ничего не понимаю...

ini_set('session.cookie_httponly', 1) - это я имел ввиду
teddy пишет:
У меня нет конкретного случая, я вообще интересуюсь кешированием запросов и устойчивостью сервера к большим нагрузкам...

Ну а в чем вопрос?
teddy пишет:
Тоесть? Я всегда при составлении SQL запросов отправляю только нужные мне параметры, зачем мне делать ненужную выборку или добавление записи? ))

Читайте более подробно http://phpclub[dot]ru/detail/article/mysqli


-----
Так было, так есть и так будет
 
 Top
likvidator
Отправлено: 27 Июня, 2013 - 05:35:32
Post Id


Посетитель


Покинул форум
Сообщений всего: 416
Дата рег-ции: Март 2012  


Помог: 4 раз(а)

[+]


По поводу сессий: если вы боитесь кражи SSID,то можно привязывать его к ip
 
 Top
vanicon
Отправлено: 27 Июня, 2013 - 05:41:16
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




likvidator пишет:
По поводу сессий: если вы боитесь кражи SSID,то можно привязывать его к ip

Что за чушь, сейчас полно динамических ip, и т .п
Да и незачем тут шаманить, идентификатор сессии при недоступности из скрипта, можно только подобрать, а это уже совсем не просто....


-----
Так было, так есть и так будет
 
 Top
likvidator
Отправлено: 27 Июня, 2013 - 06:15:41
Post Id


Посетитель


Покинул форум
Сообщений всего: 416
Дата рег-ции: Март 2012  


Помог: 4 раз(а)

[+]


vanicon пишет:
Что за чушь, сейчас полно динамических ip, и т .п

да? и тем не менее,mail.ru,например, делает привязку..правда можно отключить ее при желании.
 
 Top
vanicon
Отправлено: 27 Июня, 2013 - 06:23:56
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




likvidator пишет:
да? и тем не менее,mail.ru,например, делает привязку..правда можно отключить ее при желании.

Они вам сами об этом сказали? или откуда инфа?
(Добавление)
мм сорри не пользуюсь мейлом, не видел там привязку по ip, но я так и не вижу смысла в этом, сейчас у каждого второго пользователя ip прыгает...


-----
Так было, так есть и так будет
 
 Top
likvidator
Отправлено: 27 Июня, 2013 - 06:47:25
Post Id


Посетитель


Покинул форум
Сообщений всего: 416
Дата рег-ции: Март 2012  


Помог: 4 раз(а)

[+]


vanicon пишет:
likvidator пишет:
да? и тем не менее,mail.ru,например, делает привязку..правда можно отключить ее при желании.

Они вам сами об этом сказали? или откуда инфа?
(Добавление)
мм сорри не пользуюсь мейлом, не видел там привязку по ip, но я так и не вижу смысла в этом, сейчас у каждого второго пользователя ip прыгает...

заходим на мейл,проходим авторизацию,меняем ип,рефрешим и вуаля:
Цитата:
Введите логин и пароль ещё раз.

Чтобы данная ошибка больше не выдавалась, отключите опцию
«Сессия только с одного IP-адреса»
в настройках почтового ящика.

(Добавление)
vanicon пишет:
второго пользователя ip прыгает...

для этого есть и настройки,в которых данная фича отрубается
(Добавление)
teddy пишет:
Как можно запретить на уровне .htaccess доступ к существующим файлам/директориям на сервере?

<Files config.php>
Order Deny,Allow
Deny from all
</Files>
 
 Top
teddy
Отправлено: 27 Июня, 2013 - 11:00:10
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




vanicon
Спасибо, а с ответами на остальные вопросы, которые указаны в теме топика, помочь сможете? в частности с кешированием на стороне клиента

likvidator
Не, думаю это не за чем. Если мы прячем sessID, зачем его куда то привязывать?

По поводу файлов - эти настройки не катят... я же выше описал, что мне нужно. Ваше предложение выглядит так: You don't have permission to access /last/test.php on this server. А мне нужно что бы выдавалась 404 ошибка что файл НЕ НАЙДЕН... А тут явное палево, что файл существует

(Отредактировано автором: 27 Июня, 2013 - 11:07:47)

 
 Top
DeepVarvar Супермодератор
Отправлено: 27 Июня, 2013 - 11:09:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




От кого вы его прячете? Вы в своем уме?
Клиент в любом случае шлет какие-то идентификационные данные.
Кроме того:
php.net пишет:
session.cookie_httponly - Данная настройка позволяет эффективно защитить от XSS атак (к сожалению, эта функция поддерживается не всеми браузерами).

(Добавление)
teddy пишет:
А мне нужно что бы выдавалась 404 ошибка что файл НЕ НАЙДЕН
Так нарисуй ответ 404 скриптом.
 
 Top
teddy
Отправлено: 27 Июня, 2013 - 11:13:14
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




DeepVarvar пишет:
Клиент в любом случае шлет какие-то идентификационные данные.

Да, посылает, но уже с куками этой информацией не делится, которую можно утащить оттуда, вот в чем дело...

А по поводу браузеров, я думаю только какой нибудь оч-оч старый IE этого не поддержит... А в целом - очень даже не плохо. Вдруг злоумышленник зашел с помощью того браузера, в котором оно поддерживается? ) Это не вариант не использовать такую красоту...

(Отредактировано автором: 27 Июня, 2013 - 11:28:40)

 
 Top
likvidator
Отправлено: 27 Июня, 2013 - 11:33:35
Post Id


Посетитель


Покинул форум
Сообщений всего: 416
Дата рег-ции: Март 2012  


Помог: 4 раз(а)

[+]


teddy пишет:
Если мы прячем sessID, зачем его куда то привязывать?

если мы его НЕ прячем,то делаем привязку на случай кражи... И вообще если
teddy пишет:
ini_set('session.cookie_httponly', 1)
- это так круто,то почему все крупные проекты юзают куки????

(Отредактировано автором: 27 Июня, 2013 - 11:38:03)

 
 Top
teddy
Отправлено: 27 Июня, 2013 - 11:37:02
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




likvidator
Вот я и спрашиваю в теме топика, нужно ли это использовать, если я отфильтровал данные, после чего исключаю возможность воровства куки удаленно... Надо ли перестраховываться
 
 Top
likvidator
Отправлено: 27 Июня, 2013 - 11:39:01
Post Id


Посетитель


Покинул форум
Сообщений всего: 416
Дата рег-ции: Март 2012  


Помог: 4 раз(а)

[+]


teddy пишет:
likvidator
Вот я и спрашиваю в теме топика, нужно ли это использовать, если я отфильтровал данные, после чего исключаю возможность воровства куки удаленно... Надо ли перестраховываться

вот я и отвечаю: забудь про ini_set('session.cookie_httponly', 1)
 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB