Skip to main content

V5.1.3 Input Validation

Requirement:#

Verify that all input (HTML form fields, REST requests, URL parameters, HTTP headers, cookies, batch files, RSS feeds, etc) is validated using positive validation (allow lists). (C5)

Explanation:#

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅, Π½ΠΎ Π½Π΅ провСряСт ΠΈΠ»ΠΈ провСряСт Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ свойствами, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ для бСзопасной ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

Remediation:#

ΠŸΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, Ρ‚Π°ΠΊΠΆΠ΅ извСстная ΠΊΠ°ΠΊ «внСсСниС Π² Π±Π΅Π»Ρ‹ΠΉ список», β€” это ΠΌΠ΅Ρ‚ΠΎΠ΄ бСзопасности, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π² качСствС Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… допускаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ врСдоносных Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ сниТаСт риск уязвимостСй бСзопасности, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ SQL ΠΈ мСТсайтовый скриптинг (XSS). Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ с использованиСм JavaScript для поля HTML-Ρ„ΠΎΡ€ΠΌΡ‹:

function validateForm() {
var validEmails = ["email1@example.com", "email2@example.com"];
var email = document.forms["myForm"]["email"].value;
if (validEmails.indexOf(email) == -1) {
alert("Invalid email address");
return false;
}
}

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ массив validEmails содСрТит список Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Ρ… адрСсов элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹. ΠœΠ΅Ρ‚ΠΎΠ΄ indexOf ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ наличия Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ адрСса элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ Π² спискС. Если адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ отсутствуСт Π² спискС, ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Ρ„ΠΎΡ€ΠΌΡ‹ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΠΈ отобраТаСтся сообщСниС ΠΎΠ± ошибкС. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² Π²Π²ΠΎΠ΄Π°, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ запросы REST, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ URL, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ HTTP, Ρ„Π°ΠΉΠ»Ρ‹ cookie, ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ RSS-ΠΊΠ°Π½Π°Π»Ρ‹, ΠΏΡƒΡ‚Π΅ΠΌ опрСдСлСния списка Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ соотвСтствия входящих Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· этих Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. . РСализация Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π²Π°ΠΌΠΈ языка программирования ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°.

Additional:#

https://json-schema.org/ https://docs.djangoproject.com/en/1.11/ref/validators/ https://owasp.org/www-community/OWASP_Validation_Regex_Repository https://cwe.mitre.org/data/definitions/20.html