';\n\n// Правильно\nelement.textContent = 'Safe text';\n```\n\n### 5. HTTPS и безопасность передачи данных\n\n```javascript\n// Всегда используй HTTPS\nfetch('https://api.example.com/data', {\n method: 'GET',\n credentials: 'include'\n});\n```\n\n### 6. Валидация входных данных\n\n```javascript\nfunction validateEmail(email) {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return emailRegex.test(email);\n}\n\nfunction validatePassword(password) {\n const passwordRegex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$!%*?&]{8,}$/;\n return passwordRegex.test(password);\n}\n```\n\n### 7. Защита от Clickjacking\n\n```html\n\nX-Frame-Options: SAMEORIGIN\n```\n\n### 8. Защита данных в localStorage\n\n```javascript\n// Никогда не храни чувствительные данные в localStorage!\n\n// Неправильно\nlocalStorage.setItem('authToken', token);\n\n// Правильно\n// 1. Используй httpOnly cookies\n// 2. Добавляй CSRF токен\n// 3. Используй session storage\nsessionStorage.setItem('tempData', data);\n```\n\n### 9. Проверка прав доступа (на backend)\n\n```javascript\n// Frontend может быть обманута, проверяй на сервере!\nfetch('/api/admin/users')\n.then(response => {\n if (response.status === 403) {\n console.log('Нет доступа');\n }\n});\n```\n\n### 10. Использование безопасных библиотек\n\n```javascript\nimport DOMPurify from 'dompurify';\nimport validator from 'validator';\n\n// Избегай eval() и new Function()\n// Не используй innerHTML с пользовательским вводом\n```\n\n### Чеклист безопасности Frontend\n\n- **Всегда экранируй** пользовательский ввод\n- **Используй HTTPS** для всех запросов\n- **Валидируй данные** на frontend и backend\n- **Отправляй CSRF** токен с каждым запросом\n- **Используй httpOnly** cookies для токенов\n- **Не храни** чувствительные данные в localStorage\n- **Используй CSP** для ограничения контента\n- **Избегай eval()** и innerHTML\n- **Обновляй** зависимости\n- **Проверяй npm** пакеты на уязвимости\n\nБезопасность веб-приложения — **общая ответственность** frontend и backend разработчиков.","dateCreated":"2026-03-26T18:43:49.994046","upvoteCount":0,"author":{"@type":"Person","name":"claude-haiku-4.5"}}}}
← Назад к вопросам

Какие знаешь методы защиты от веб-уязвимостей?

2.0 Middle🔥 171 комментариев
#Браузер и сетевые технологии

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Методы защиты от веб-уязвимостей

Основные веб-уязвимости и защита от них

Безопасность — критический аспект веб-разработки. Frontend разработчик должен знать основные уязвимости и способы защиты от них.

1. XSS (Cross-Site Scripting)

XSS — это атака, при которой злоумышленник внедряет вредоносный JavaScript код в веб-приложение.

Защита:

// Неправильно — опасно!
const userInput = '<img src=x onerror="alert("XSS")">';
document.innerHTML = userInput; // Выполнит вредоносный код

// Правильно — санитизировать вывод
const div = document.createElement('div');
div.textContent = userInput; // Безопасно
element.appendChild(div);

// В React (автоматически экранирует)
function Profile({ userBio }) {
  return <div>{userBio}</div>; // Безопасно
}

DOMPurify для очистки HTML:

import DOMPurify from 'dompurify';

const dirtyHTML = '<img src=x onerror="alert("XSS")">';
const cleanHTML = DOMPurify.sanitize(dirtyHTML);

2. CSRF (Cross-Site Request Forgery)

CSRF — атака, при которой злоумышленник заставляет пользователя выполнить действие на другом сайте.

Защита:

const csrfToken = document.querySelector('meta[name="csrf-token"]').content;

fetch('/api/update', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-CSRF-Token': csrfToken
  },
  body: JSON.stringify({action: 'delete'})
});

SameSite cookie:

// На сервере: Set-Cookie: session=abc123; SameSite=Strict;

3. SQL Injection

SQL Injection — внедрение SQL кода через пользовательский ввод.

Защита (на frontend):

// Неправильно
const query = `SELECT * FROM users WHERE id = ${userId}`;

// Правильно — параметризованные запросы на сервере
fetch('/api/users', {
  method: 'GET',
  headers: {'Content-Type': 'application/json'}
});

4. Content Security Policy (CSP)

CSP — механизм ограничения источников загрузки контента.

<meta http-equiv="Content-Security-Policy" 
      content="default-src 'self'; script-src 'self' trusted-cdn.com">

В JavaScript:

// Неправильно
element.innerHTML = '<script>alert("XSS")</script>';

// Правильно
element.textContent = 'Safe text';

5. HTTPS и безопасность передачи данных

// Всегда используй HTTPS
fetch('https://api.example.com/data', {
  method: 'GET',
  credentials: 'include'
});

6. Валидация входных данных

function validateEmail(email) {
  const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
  return emailRegex.test(email);
}

function validatePassword(password) {
  const passwordRegex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;
  return passwordRegex.test(password);
}

7. Защита от Clickjacking

<!-- В HTTP заголовках -->
X-Frame-Options: SAMEORIGIN

8. Защита данных в localStorage

// Никогда не храни чувствительные данные в localStorage!

// Неправильно
localStorage.setItem('authToken', token);

// Правильно
// 1. Используй httpOnly cookies
// 2. Добавляй CSRF токен
// 3. Используй session storage
sessionStorage.setItem('tempData', data);

9. Проверка прав доступа (на backend)

// Frontend может быть обманута, проверяй на сервере!
fetch('/api/admin/users')
.then(response => {
  if (response.status === 403) {
    console.log('Нет доступа');
  }
});

10. Использование безопасных библиотек

import DOMPurify from 'dompurify';
import validator from 'validator';

// Избегай eval() и new Function()
// Не используй innerHTML с пользовательским вводом

Чеклист безопасности Frontend

  • Всегда экранируй пользовательский ввод
  • Используй HTTPS для всех запросов
  • Валидируй данные на frontend и backend
  • Отправляй CSRF токен с каждым запросом
  • Используй httpOnly cookies для токенов
  • Не храни чувствительные данные в localStorage
  • Используй CSP для ограничения контента
  • Избегай eval() и innerHTML
  • Обновляй зависимости
  • Проверяй npm пакеты на уязвимости

Безопасность веб-приложения — общая ответственность frontend и backend разработчиков.