Контрольный список для уязвимостей, связанных с программированием веб-сайтов
Наблюдение за тем, как вышло в интернет, было для меня довольно хорошим образованием. Я хотел бы сделать контрольный список различных факторов и эксплойтов, используемых против веб-сайтов, и какие методы программирования можно использовать для защиты от них.
- В каких категориях нет?
- Какие методы защитного программирования?
- и т.д...
Ответы
Ответ 1
Из Открыть проект безопасности веб-приложений:
В первую десятку входят:
- Межсайтовый скриптинг (XSS)
- Недостатки впрыска (инъекция SQL, инъекция script)
- Выполнение вредоносных файлов
- Небезопасная ссылка на прямой объект
- Подделка запросов на межсайтовый запрос (XSRF)
- Утечка информации и неправильная обработка ошибок
- Нарушение аутентификации и управления сеансом
- Небезопасное криптографическое хранилище
- Небезопасные коммуникации
- Невозможность ограничения доступа к URL-адресу.
Ответ 2
Во-вторых, информация OWASP является ценным ресурсом. Также могут представлять интерес следующие элементы, в частности шаблоны атаки:
Ответ 3
Очевидно, проверяйте каждое поле для уязвимостей:
- SQL - escape-строки (например,
mysql_real_escape_string
)
- XSS
- HTML, который печатается из полей ввода (обычно это знак XSS)
- Что-то еще не является целью, для которой было создано поле для
Поиск бесконечных циклов (единственная косвенная вещь (если многие люди случайно ее обнаружили), которые могли бы действительно убить сервер).
Ответ 4
Некоторые методы профилактики:
XSS
-
Если вы берете какие-либо параметры/ввод от пользователя и когда-либо планируете его выводить, будь то в журнале или веб-странице, дезинфицируйте его (разделите/удалите что-нибудь похожее на HTML, кавычки, javascript...) Если вы печатаете текущий URI страницы внутри себя, санируете! Даже печать PHP_SELF, например, небезопасна. Санируйте! Светоотражающий XSS поставляется в основном из неанализированных параметров страницы.
-
Если вы берете на себя какой-либо ввод от пользователя и сохраняете его или печатаете, предупреждайте о них, если обнаружено что-либо опасное/недействительное, и повторите ввод. IDS хорошо подходит для обнаружения (например, PHPIDS). Затем дезинфекция перед хранением/печатью. Затем, когда вы печатаете что-то из хранилища/базы данных, снова санируйте!
Вход → IDS/sanitize → store → sanitize → output
-
используйте сканер кода во время разработки, чтобы выявить потенциально уязвимый код.
XSRF
- Никогда не используйте запрос GET для
деструктивная функциональность, т.е.
удаление сообщения. Вместо этого
принимать POST-запросы. GET делает его более легким для хакерства.
- Проверка
referrer, чтобы убедиться, что запрос
пришел с вашего сайта не
работа. Нетрудно подделать
реферер.
- Использовать случайный хэш как токен, который должен присутствовать и действителен в каждом запросе, и истекает через некоторое время. Распечатайте маркер в поле скрытой формы и проверьте его на стороне сервера при отправке формы. Плохие парни должны были бы поставить правильный токен, чтобы подделать запрос, и если им удастся получить реальный токен, это должно быть до истечения срока его действия.
SQL-инъекция
- ваш класс абстракции ORM или db должен иметь методы санировки - всегда используйте их. Если вы не используете класс абстракции ORM или db... вы должны быть.
Ответ 5
SQL-инъекция
Ответ 6
XSS (Cross Site Scripting) Атаки
Ответ 7
Легко контролировать и легко исправить: дезинфекция данных, полученных с клиентской стороны. Проверка таких вещей, как ';' может помочь предотвратить ввод вредоносного кода в ваше приложение.
Ответ 8
G'day,
Хорошим инструментом статического анализа для обеспечения безопасности является FlawFinder, написанный Дэвидом Уилером. Он отлично справляется с поиском различных эксплойтов безопасности,
Однако он не заменяет того, что кто-то читает ваш код. Как говорит Дэвид на своей веб-странице: "Дурак с инструментом все еще дурак!"
НТН.
веселит,
Rob
Ответ 9
Вы можете получить хорошие дополнения Firefox, чтобы протестировать несколько недостатков и уязвимостей, таких как xss и sql-инъекции из Security Compass. Слишком плохо, что они не работают на firefox 3.0. Я надеюсь, что они скоро будут обновлены.