[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Какие ещё опасности поджидают?
alex455
Всем привет, снова по безопасности.

Пишу сайт, где есть аккаунты (аж 2 типа), логин с паролем - естественно, ввод данных для отправки их админу, которые автоматически INSERT'ятся в MySQL. Вобщем, вводимых кем угодно данных хватает. Сайт достаточно важен и может представлять интерес для взлома. Если он получит хоть какую-нибудь заметную популярность - я ожидаю, что найдутся желающие проверить на нём как работают автоматические средства для ломания сайтов.

Данные хостинга надёжно защищены, так как пароли грамотно составлены и хранятся мною на машине с GNU/Linux в зашифрованном виде. Никаких краж паролей от FTP/MySQL и прочих быть не может. Так что тут, вроде, меры принял.

Все данные, которые только могут пойти в БД, проходят mysql_real_escape_string(), так что тут, вроде, тоже защита есть (от injection).

Какие ещё могут быть бреши в безопасности, над которыми следует хорошо поработать, прежде чем запускать сайт online?



Спустя 10 минут, 10 секунд (28.06.2012 - 13:38) vagrand написал(а):
Почитайте про XSS уязвимости

Спустя 6 минут, 7 секунд (28.06.2012 - 13:44) alex455 написал(а):
Я читал про них. Это когда, например, посетитель сайта посылает админу данные, которые должны отобразиться в админке as is, а в них вставленный кусок js, который отправляет текущие cookie взломщику. Правильно?

Спустя 14 секунд (28.06.2012 - 13:44) Zzepish написал(а):
угу, и просо делай так:htmlspecialchars($str) при выводе из базы

Спустя 18 минут, 47 секунд (28.06.2012 - 14:03) alex455 написал(а):
Zzepish,
А почему не htmlentities? Они же, вроде, полноценнее...

Спустя 11 минут, 31 секунда (28.06.2012 - 14:14) alex455 написал(а):
Вобщем, спасибо за совет; теперь вводимые данные проходят такую проверку:
function prep($var)
{
return htmlentities(mysql_real_escape_string(trim($var)), ENT_QUOTES, 'utf-8');
}

Может, нужно что-то ещё? :-)

Спустя 32 минуты, 22 секунды (28.06.2012 - 14:47) Zzepish написал(а):
alex455
не так!
В базу заноси только так
mysql_real_escape_string(trim($var)

а выводи через
htmlentities($str)

Спустя 8 минут, 2 секунды (28.06.2012 - 14:55) alex455 написал(а):
Сейчас попробовал сценарий со своей функцией - всё отлично работает.
Zzepish, смысл твоего варианта понятен, но он добавляет сложности. Почему бы не внести в БД обработанное моей функцией, а выводить из БД потом уже as is? Так проще получается. Данные в БД лежат уже готовые для вывода в HTML и отдельно об этом заботиться не надо.

Спустя 14 минут, 49 секунд (28.06.2012 - 15:09) ApuktaChehov написал(а):
alex455 Предположим что я хочу себе вот такой ник: >!Красавчег!<
После обработки твоей функцией в БД мой ник запишется вот так:&gt;!Красавчег!&lt;. Как минимум мое имя будет неверно записано в БД.

В БД данные должны быть записаны так как их прислал юзер. Искажение информации - плохая идея.

Спустя 1 месяц, 16 дней, 14 часов, 42 минуты, 41 секунда (15.08.2012 - 05:52) Slavok написал(а):
Еще не стоит забывать про CSRF-атаки. Очень популярны в интернете сейчас. Решение - добавлять уникальный токен к форме и проверять его после сабмита формы.

Спустя 3 минуты, 19 секунд (15.08.2012 - 05:55) Slavok написал(а):
Еще надо обезопасить сайт от PHP File Inclusion и запретить всякие опасные функции типа exec, eval. Через них работают хакерские shell-скрипты.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.