Я думаю, что мое приложение PHP захвачено сессией? - PullRequest
2 голосов
/ 18 апреля 2010

У меня есть сайт php, который позволяет зарегистрированным пользователям входить в систему (с действительным паролем) и настраивает сеанс на основе их UserID. Однако я почти уверен, что это было похищено, и я нашел «новые» файлы на своем сервере, которые я там не поместил. Мой сайт очищает весь пользовательский ввод для SQL-инъекций и XSS, но это продолжается. У кого-нибудь есть идеи, как решить эту проблему?

Ответы [ 3 ]

2 голосов
/ 19 апреля 2010

Перехват файлов cookie сеанса НЕ должен позволять злоумышленнику создавать новые файлы на вашем сервере. Все, что он мог сделать, это дать доступ к сеансу аутентифицированного пользователя. Это будет зависеть от вашего кода и / или конфигурации сервера, которая позволит загружать произвольные файлы в webroot сайта.

Чтобы проверить наличие удаленных компромиссных попыток, получите время создания подозрительных файлов (search.php, 7.php.jpg) и т. Д., А затем пролистайте журналы вашего сервера, чтобы увидеть, что происходило в это время. Если вы регистрируете идентификатор сеанса вместе с остальной частью попадания, вы можете легко увидеть, был ли сеанс перехвачен, так как он будет использоваться с двух или более разных IP-адресов в течение времени жизни сеанса. Было бы особенно очевидно, если исходный пользователь вошел в систему с одного провайдера, а затем внезапно появился переход к совершенно другому провайдеру.

И, конечно, как проходят ваши сеансы? Печенье? PHP trans_sid (передача сеанса в скрытые поля формы и строки запроса)? trans_sid особенно уязвим для перехвата, так как простой обмен ссылкой на что-то, что ваш сайт также передает идентификатор сеанса, и любые внешние ссылки на вашем сайте будут иметь идентификатор сеанса, отображаемый в реферер HTTP.

1 голос
/ 19 апреля 2010

Решение, которое придумали эксперты PHP, заключается в использовании уникальных ключей / токенов при каждой отправке форм, взгляните на эту идею здесь: net-tutes

Не забудьте заглянуть в Руководство по безопасности PHP. . В нем рассматриваются такие темы, как XSS, подмена форм, SQL-инъекция, перехват сеансов, фиксация сеансов и многое другое.

Помните, всегда используйте правильные типы данных в своих запросах, например, используйте функцию int или intval перед числами и функцию mysql_real_escape_string для строковых значений. Пример:

$my_num = (int) $_POST['some_number'];
$my_string = mysql_real_escape_string($_POST['some_string']);

Вы также можете использовать операторы prepend для ваших запросов.

Популярный проект для защиты приложений PHP:

0 голосов
/ 18 апреля 2010

Я пойду назад и скажу, что ваше «печенье» легко угадать.

Некоторые сайты, когда пользователь входит в систему, просто создают cookie, а код аутентификации просто проверяет СУЩЕСТВОВАНИЕ cookie.

Теперь, если я зарегистрируюсь и войду на ваш сайт, а затем открою ваш файл cookie и обнаружу, что вы просто сохраняете мой идентификатор пользователя, тогда я могу манипулировать значением другого идентификатора пользователя и вуаля!

Вы поняли идею.

...