CSRF (Cross-Site Request Forgery): Шабуыл логикасы және қорғану жолдары
Бұл сабақта CSRF шабуылының қалай жұмыс істейтіні, оның қауіптілігі және одан қорғану әдістері қарастырылады. Оқушы нақты мысалдар арқылы CSRF шабуылдарын түсініп, оған қарсы шешімдермен танысады.
1. CSRF деген не?
CSRF (Cross-Site Request Forgery) – пайдаланушы өз еркінсіз әрекет жасап қойғандай көрінетін шабуыл түрі.
Бұл шабуыл қолданушы жүйеге логин арқылы кіріп тұрған кезде орындалады.
Шабуылдаушы браузер арқылы пайдаланушы атынан рұқсат етілген сұраныс жасайды.
2. CSRF шабуылы қалай жұмыс істейді?
Пайдаланушы сайтқа кіріп логин жасайды (мысалы, банк).
Браузерде сессия cookie сақталады.
Содан кейін шабуылдаушы сайттағы зиянды код төмендегідей сұраныс жібереді:
html
Копировать
Редактировать
<img src="https://bank.kz/transfer?to=attacker&amount=10000">
Бұл сұраныс автоматты түрде пайдаланушының сессиясымен жіберіледі.
3. Нақты мысал:
html
Копировать
Редактировать
<form action="https://example.com/change-email" method="POST">
<input type="hidden" name="email" value="attacker@mail.com">
<input type="submit" value="Send">
</form>
<script>
document.forms[0].submit();
</script>
Қолданушы бұл HTML парақты ашқанда, зиянды әрекет өздігінен орындалады.
4. CSRF белгілері мен әсері:
Жаңа email немесе пароль орнату
Ақша аудару
Аккаунт жою немесе өзгерту
Басқа да рұқсатсыз әрекеттер
5. Қорғану әдістері:
✅ CSRF Token қолдану:
Әр формамен бірге сервер генерирлейтін бірегей токен:
html
Копировать
Редактировать
<input type="hidden" name="csrf_token" value="9a8d7g1h6">
Сервер токенді тексереді. Егер сәйкес болмаса — сұраныс қабылданбайды.
✅ SameSite cookie саясаты:
SameSite=Lax немесе SameSite=Strict атрибуты бар cookie қолдану — бөтен сайттардан автоматты сұраныстар жіберуге тыйым салады.
✅ Реферер және Origin тексеру:
Сервер сұраныстың келген орнын тексеріп, бөгде сайттардан келгенін анықтай алады.
✅ Аутентификацияны қайта сұрау:
Маңызды әрекеттер кезінде парольді қайта сұрату.
✅ HTTP әдістерін шектеу:
GET тек деректер сұрауға арналған, ал күйді өзгертетін операциялар тек POST, PUT арқылы жасалуы керек.
6. Фреймворк мысалдары (қорғаныс):
Django: {% csrf_token %}
Laravel: @csrf
Express (Node.js): csurf middleware арқылы қорғау
Spring Security: CSRF токен автоматты түрде қосылады
7. Практикалық тапсырма:
Жалған форма арқылы CSRF шабуылын модельдеу
Содан кейін оған қарсы CSRF токен орнату арқылы шешім жасап көру