Mavzu: sql ineksiyalardan ma’lumotlar bazasini himoyalash



Download 133,5 Kb.
bet1/2
Sana19.01.2020
Hajmi133,5 Kb.
#35697
  1   2
Bog'liq
8-lab inyeksiya

8-Laboratoriya ishi

Mavzu: SQL ineksiyalardan ma’lumotlar bazasini himoyalash.


Ishdan maqsad: ineksiyalardan ma’lumotlar bazasini himoyalash o’rganish va amalda qo’llash.

Nazariy qism


SQL in'ektsiyasining asosiy shakli SQL buyruqlari bilan biriktirilgan va bajariladigan foydalanuvchi kiritadigan o'zgaruvchiga to'g'ridan-to'g'ri kodni kiritishdan iborat. Kamroq to'g'ridan-to'g'ri hujum zararli kodni jadvalda yoki metadata sifatida saqlash uchun mo'ljallangan satrlarga kiritadi. Saqlangan satrlar keyinchalik dinamik SQL buyrug'iga biriktirilsa, zararli kod bajariladi. Xavfsizlik puxta va qat'iyatli bo'lish demak, biz ham ushbu mashqni TSQL-da bajarishimiz kerak. Yomon ma'lumotlar bizning ma'lumotlar bazamizda saqlanmasligi yoki ularga ta'sir qilmasligi uchun TSQL-da ma'lumotlarni tozalash usullarining bir nechta misollari keltirilgan.

1.Umumiy qidiruv uchun kirishni qabul qilish uchun parametrlashtirilgan saqlangan protseduralardan foydalaning. Sizga qo'shimcha xavfsizlik parametrlarini taqdim qilishdan tashqari, kerak bo'lganda ular ishlash uchun oson sozlanishi mumkin

2.Ishlatilganda dinamik SQL-ni o'lchash. Bu SQL in'ektsiyasiga nisbatan ancha moslashuvchanlikni ta'minlaydi. Quyidagi izlanishning oddiy namunasi bo'lib, unda TSQL ichiga qattiq kodlangan emas, balki @search_criteria kiritish parametrlashtiriladi:

DECLARE @CMD NVARCHAR(MAX);

SELECT @CMD = 'SELECT * FROM Person.Person

WHERE LastName = @search_criteria';

PRINT @CMD;

EXEC sp_executesql @CMD, N'@search_criteria NVARCHAR(1000)', @se arch_criteria;

E'tibor bering, @search_criteria parametri dinamik SQL ichida qo'shimcha parametrlar ro'yxati sifatida aniqlanadi. Parametrlarni bosqichma-bosqich o'tkazib, biz TSQL-ni qurishdan, shuningdek, apostroflar va boshqa keng tarqalgan SQL in'ektsiya teshiklarining qo'lda tekshirilishini talab qilamiz.

3.Dinamik SQL-ni bajarishda sp_executesql-dan foydalaning. Bu EXEC () ga nisbatan ancha moslashuvchanlikni ta'minlaydigan ko'p qirrali protsedura. Bundan tashqari, bu xavfsizroq va o'rnatilgan parametrlashtirishga imkon beradi. Yodda tutingki, dinamik SQL bayonoti va parametrlar ro'yxati sp_executesql ga o'tishdan oldin erkin sozlanishi mumkin.

4.Agar kerak bo'lsa, o'zgaruvchan nomaqbul belgilarni tozalash uchun QUOTENAME-dan foydalaning. Masalan, quyidagi TSQL satrni apostrof bilan almashtirish urinishining o'rnini haqiqiy satr bilan almashtiradi:


DECLARE @form_input VARCHAR(250) = '''SELECT * FROM dbo.all_of_ my_passwords'; SELECT @form_input;

SELECT QUOTENAME(@form_input, '''');

Natijalar ip atrofidagi apostroflarni ko'rsatadi. Bunga qo'shimcha ravishda, kirish satridagi apostrof, uni ishlatadigan satrlar buzilmasligini ta'minlaydigan ikki tomon lama apostroflar bilan almashtirildi:



Results.

QUOTENAME-dan foydalanishda yomon alternativalar ko'p, ulardan eng yomoni belgi kombinatsiyalarini qo'lda sozlash uchun REPLACE ko'p funktsiyalarini qo'lla shdir. Natija ko'pincha quyidagicha ko'rinadi:

DECLARE @form_input VARCHAR(250) = '''SELECT * FROM dbo.all_of_ my_passwords';

SELECT REPLACE(@form_input, '''', '''''');

Bu kirishlarni tozalashning qiyin usuli, chunki xaker tomonidan qilinadigan har qan day yomon harakatni oldindan bilish va bu erda hisobga olish kerak. Agar biz bosh qa ajratilgan satr ichida dinamik SQL-ni bajarayotgan kambag'al dastaklar bo'lsak, unda apostroflar hajmi tartibsizlikka va xatolarga olib keladigan kodni keltirib chiq aradigan aylanish miqdoriga yaqinlashishini kuting. Ilova va veb-kod ham tozalovc hi kirishlarga ega ekanligiga ishonch hosil qiling. Bu bizni yomon kod, inson xatosi yoki xavfsizlikning zaifligini salbiy ta'siridan himoya qiladigan qo'shimcha himoya qatlamlarini ta'minlaydi.



LIKE operatorlaridan ehtiyotkorlik bilan foydalaning.

Agar foydalanuvchi ma'lumotlari LIKE operatoridan foydalanadigan so'rovga yubo rilsa, natijada olingan so'rov faqat to'g'ri ma'lumotlarni so'rashiga amin bo'lishimiz kerak. Masalan, "Edvard" deb nomlangan odamlarni oddiy qidirishimiz mumkin:



DECLARE @Search_Criteria NVARCHAR(MAX) = 'Edward';

SELECT

*

FROM Person.Person

WHERE Person.FirstName LIKE @Search_Criteria;

Natijalar Yusuf ismli 72 kishidan iborat:



Agar foydalanuvchi qidiruviga foiz belgisini qo'shsa nima bo'lishini ko’ramiz:


Download 133,5 Kb.

Do'stlaringiz bilan baham:
  1   2




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish