ASP.NET MVC - SQL инжектиране

Съдържание
Има много видове атаки, които можем да получим в нашите приложения, една от най -често срещаните и която може да генерира голямо количество щети е SQL инжектиранеТази атака се състои в намиране на уязвимости в начина, по който обработваме заявки към бази данни за извличане на информация или вмъкване на стойности, които могат да повлияят на нейната функционалност.
За да се предпазим от този вид атака, първо трябва да знаем от какво се състои, по този начин можем да научим какви предпазни мерки трябва да вземем.
Както споменахме, тази атака кара нашата база данни да не работи правилно, за това нападателят въвежда данни, които правят нашите заявки неуспешни според определени уязвимости, с което нападателят може да опита вземете схемите на нашите таблици или въведете данни, които могат да компрометират операцията, като напр въведете потребител за достъп до административния раздел на нашето приложение.
Един от най -често срещаните начини е, че въвеждаме параметри директно, когато ги получаваме от контролерите, например имаме търсене по категории и получаваме от контролера идентификатора на категория, която трябва да се търси, ако преминава директно, без да я почиства може да генерира атака, която показва нападателя всички съществуващи категории.
Нека да разгледаме следния несигурен код:

Увеличете

Можем да видим как в ред 6 изграждаме условието за търсене и след това в ред 10 Предаваме го директно на метода, който изгражда заявката, неопитно око може да не види никакъв проблем, но ако нападател въведе следния параметър: "1 или 1 = 1" можете да получите списък с цялата ни таблица.
Как да се защитим?Начинът да се защитим в този случай преминава през две основни стъпки, първо е, че не можем да позволим данните да се изпълняват директно, когато ги получим, за това, преди заявката, трябва да изчистим параметъра с метод, който търси незаконни символи и в случай на намирането им да изпратим потребителя на страница 404 или Страницата не е намерена.
Нека да видим в следния код как можем да филтрираме това, което получаваме:

Тук правим преглед с a обикновена фраза Нека нашият контролер получава само числа, в противен случай изпращаме съобщение, всеки може да направи своята версия, но важното е да контролираме какво ще получи нашето приложение.
The второ стъпка за избягване на атаки е не работи с заместващ знак "*" и винаги ограничаваме заявките, когато чакаме запис, по този начин избягваме излагането на всички данни в случай, че някой успее да надхвърли нашите прогнози.
Хванете изключенияИ накрая, ако в нашето приложение влезе незаконен параметър, трябва на всяка цена да избягваме да излезе следа от грешката, тъй като тя съдържа чувствителни данни от нашата инсталация и може да се използва срещу нас, затова винаги трябва да сме сигурни, че изключения и изпращане на персонализирано съобщение, което не съдържа много подробности, тъй като тези подробности могат да се видят в средата за разработка.
Както видяхме, познаването на атаките ни дава различна перспектива за това как можем да защитим нашето приложение и как да направим, за да осигурим повече сигурност на нашите потребители.Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave