Ответ
Вот основные методы защиты:
- XSS - экранирование пользовательского ввода, Content Security Policy (CSP), HttpOnly куки:
// Экранирование
function escapeHtml(str) {
return str.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">");
}
- CSRF - токены в формах, SameSite атрибут для кук:
<input type="hidden" name="_csrf" value="токен_с_сервера">
-
SQL-инъекции - параметризованные запросы, ORM
-
CORS - настройка заголовков на сервере:
Access-Control-Allow-Origin: https://trusted.com
-
Clickjacking - заголовок X-Frame-Options: DENY
-
Хранение данных - хеширование паролей (bcrypt), шифрование
-
HTTPS - обязательное использование для передачи данных
-
Защита API - лимиты запросов, JWT аутентификация
-
Заголовки безопасности:
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block Ответ 18+ 🔞
А, слушай, смотри, тут про безопасность веб-приложений, ну, это такая тема, где можно на ровном месте пиздец натворить, если не знать, куда смотреть. Вот, блядь, основные способы не обосраться.
1. XSS (Эти ваши скрипты в тексте)
Ну, это когда пользователь вводит не «Привет», а <script>украсть_куки()</script>. Чтобы не было такого пиздеца, надо всё экранировать, как будто ты санитар в чумном бараке. И куки ставить с флагом HttpOnly, чтобы к ним с фронтенда доступа не было, и Content Security Policy (CSP) настроить, чтобы браузер знал, откуда можно скрипты грузить, а откуда — нахуй.
// Экранирование
function escapeHtml(str) {
return str.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">");
}
2. CSRF (Поддельные запросы)
Представь: ты залогинен на каком-то сайте, а тебе на почту приходит письмо «Посмотри котиков!», ты кликаешь, а там невидимая форма, которая от твоего имени деньги переводит. Пиздец, да? Чтобы такого не было, в каждую форму вставляй уникальный токен с сервера. И кукам ставь атрибут SameSite, чтобы их не слали с левых сайтов.
<input type="hidden" name="_csrf" value="токен_с_сервера">
3. SQL-инъекции Это классика, блядь. Никогда, слышишь, НИКОГДА не вставляй пользовательский ввод прямо в запрос. «SELECT * FROM users WHERE name = '» + userName + «'» — это прямой билет в админку. Используй параметризованные запросы или ORM, которые сами всё заэкранируют. Просто запомни: конкатенация строк для SQL — это ебаный детский сад.
4. CORS (Межсайтовые запросы) Тут, чтобы не было, что любой левый сайт может к твоему API стучаться, настраивай заголовки на сервере. Разрешай только с доверенных доменов.
Access-Control-Allow-Origin: https://trusted.com
5. Clickjacking (Кликджекинг)
Это когда твой интерфейс встраивают в прозрачный iframe на левом сайте и нажимают на кнопки вместо тебя. Защита — проще некуда: ставь заголовок X-Frame-Options: DENY или SAMEORIGIN.
6. Хранение данных Пароли, блядь, никогда в открытом виде! Только хеширование, желательно с солью, алгоритмами типа bcrypt. Конфиденциальные данные — шифруй. Это же очевидно, как дважды два, но нет же, находятся умники, которые хранят всё в plain text.
7. HTTPS В 2024 году говорить об этом — как о необходимости мыть руки после туалета. Но всё равно находятся те, кто запускает продакшен по HTTP. Это просто пиздец. Все данные летят как есть, любой в сети может их перехватить. Включи и забудь.
8. Защита API Не давай всем подряд стучаться к твоим эндпоинтам. Лимиты на запросы (rate limiting), нормальная аутентификация (например, через JWT), проверка прав доступа. Иначе на тебя налетят боты, как пидары на халяву, и положит сервер.
9. Заголовки безопасности Вот эти штуки, которые многие забывают, а они, блядь, очень полезные. Просто добавь их в ответы сервера, и уже станет безопаснее.
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Вот, в общем-то, и всё. Не так страшно, если знать, где подстелить соломки. Главное — не быть распиздяем и думать головой, а не жопой.