# πŸ”’ Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS ## ΠžΠ±Π·ΠΎΡ€ БистСма quoter Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΡƒΡŽ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π°Ρ‚Π°ΠΊ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ DDoS, брутфорс ΠΈ ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚Π°Ρ†ΠΈΡŽ уязвимостСй. ## πŸ›‘οΈ Π£Ρ€ΠΎΠ²Π½ΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ### 1. Π‘Π΅Ρ‚Π΅Π²ΠΎΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ (HTTP Server) #### ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° запросов - **ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ payload**: 500 ΠœΠ‘ - **ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ JSON**: 1 ΠœΠ‘ - **Π’Π°ΠΉΠΌΠ°ΡƒΡ‚ соСдинСния**: настраиваСтся Ρ‡Π΅Ρ€Π΅Π· Actix-web #### Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ бСзопасности ```http X-Content-Type-Options: nosniff X-Frame-Options: DENY X-XSS-Protection: 1; mode=block Referrer-Policy: strict-origin-when-cross-origin Content-Security-Policy: default-src 'self'; img-src 'self' data: https:; object-src 'none'; Strict-Transport-Security: max-age=31536000; includeSubDomains ``` #### CORS Policy - **Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Π΅ Π΄ΠΎΠΌΠ΅Π½Ρ‹**: `discours.io`, `new.discours.io`, `localhost:3000` - **Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹**: GET, POST, OPTIONS - **ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ**: Content-Type, Authorization, If-None-Match, Cache-Control ### 2. Rate Limiting (Π›ΠΈΠΌΠΈΡ‚Ρ‹ запросов) #### ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ | Π’ΠΈΠΏ endpoint | Макс. запросов | Окно Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ | Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° | |--------------|----------------|--------------|------------| | ΠžΠ±Ρ‰ΠΈΠ΅ запросы | 100 | 60 сСк | 5 ΠΌΠΈΠ½ | | Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ² | 10 | 300 сСк | 10 ΠΌΠΈΠ½ | | АутСнтификация | 20 | 900 сСк | 30 ΠΌΠΈΠ½ | #### ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ 1. **IP-based tracking**: ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ IP (ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ X-Forwarded-For, X-Real-IP) 2. **Redis storage**: Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ счСтчиков Π² Redis с TTL 3. **Local cache**: Быстрый Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ кэш для частых ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ 4. **Progressive blocking**: Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Ρ… Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡΡ… ### 3. Валидация запросов #### ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ бСзопасности - **Π”Π»ΠΈΠ½Π° ΠΏΡƒΡ‚ΠΈ**: максимум 1000 символов - **ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ²**: максимум 50 - **Π”Π»ΠΈΠ½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ²**: максимум 8192 символа - **ΠŸΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ символы**: Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ `..`, `\0`, `\r`, `\n` #### ДСтСкция Π°Ρ‚Π°ΠΊ ```rust // ΠŸΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ let suspicious_patterns = [ "/admin", "/wp-admin", "/phpmyadmin", "/.env", "/config", "/.git", "/backup", "/db", "/sql", "script>", "