Вэб апликешн хөгжүүлж буй хүмүүс SQL тарилга-ийн талаар маш сайн мэддэг байх, хэрхэн хамгаалах талаарх аргуудийг судалсан байх ёстой. Бусад нууцлал хамгаалалтын аргуудын талаар Очирхуяаг-ийн сонирхолтой нийтлэлээс олж уншаарай.
SQL тарилга нь апликешний өгөгдлийн баазын давхрагад үүсдэг, хэрэглэгчийн оруулсан өгөгдлийг буруу буюу дутуу шүүснээс шалтгаалан гардаг хамгаалалтын алдаа юм. Өөр үгээр хэлбэл апликешнийг хакдах түгээмэл арга юм.
Хэрхэн ашигладаг талаар хамгийн энгийн жишээ “Login” буюу “системд нэвтрэх” хэсэг дээр дээр авч үзье;
HTML форм;
Хэрэглэгч нэрээ болон нууц үгээ оруулсаны дараа сабмит товчоо дарахад манай доорх Kод ажиллах болно;
<% $result = mysql_query(”select count(*) from users where userName=’” + userName + “‘ and userPass=’” + password + “‘” );
if(mysql_num_rows(
$result
) > 0 )
// login амжилттай нэвтэрлээ else
// login амжилтгүй
%>
Дээрх кодиг харахад эхний ээлжинд буруу зүйл байхгүй юм шиг авч SQL тарилгад өртөгдөх аюултай юм. Хэрэв хэрэглэгч
Username: ' or 1=1 ---
Password: [хоосон]
гэж оруулбал манай код хэрэглэгчийг системд нэвтруулэх болно. Учир ни манай SQL маань нэгээс олон хэрэглэгчийн мэдээллийг буцаах болно. Учир нь манай код доорх SQL-ийг ажиллуулна гэсэн үг
select count(*) from users where userName='' or 1=1 --' and userPass='
– тэмдэгт нь SQL-д талбарийг тодорхойлж байгаа учраас тэмдэгтээс хойших ямарч командийг ажиллуулахгүй гэсэн үг. Эсвэл бүр хорлонтой хакер бол дараагын өгөгдлүүдийг оруулж манай хэрэглэгчийн хүснэгтэд байгаа бүх хэрэглэгчийн мэдээллийг устгаж бас болно
Username: ' or 1=1; drop table users; --
Password: [хоосон
]
MSSQL сэрвэр ашиглаж байвал бүр сэрвэрийг чини тэр чигээр нь унтрааж болно;
Username: '; shutdown with nowait; --
Password: [
хоосон
]
За тэгвэл энэ бүгдээс хэрхэн хамгаалах вэ?
1. Өгөгдлийн баазад хандаж байгаа хэрэглэгчийн эрхийг хязгаарлах
Ихэнх тохиолдолд вэб апликеш нь өгөгдлийн баазны зөвхөн зарим нэгэн хэсэг руу хандах шаардлагатай байдаг. Тиймээс бид уг апликешн-д зөвхөн өөрт нь хэрэгтэй мэдээлэл рүү хандах эрхийг олгож өгөх нь чухал. Жишээ нь хүснэгт устгах, баазийг унтраах эрх ихэнх апликешн-д шаардлагагүй. Ийм замаар бид халдлагаас аль болох бага шарх авч гарах боломж ихсэнэ.
2. Хашилтийн тэмдэгтүүдээс зугтах
‘ болон “ тэмдэгтүүд нь энэ халдагад гол ашиглагддаг тэмэдгтүүд байгаа юм. Энэ тэмдэгтүүдээс зугтах функцууд програмчлалын хэл болгонд байдаг. Жишээ нь
3. Stored Procedure ашиглах
Програм дотроосоо SQL комманд үүсгэж дуудхынхаа оронд Stored Procedure буюу өмнө үүсгэгдсэн SQL процэдурүүдийг дуудах нь апликешний хурд хүчнээс гадна парамэтэрүүдийг шүүх сайн талтай.
4. Зарим тэмдэгтээс зугтах
; болон – тэмдэгтүүд нь СQЛ командуудад ашиглагддаг тул ийм төрлийн тэмдэгтүүдийг зарим өгөгдлөөс шүүх хэрэгтэй.
Иймэрхүү аргууд байж болно. Мэдээж өөр аргууд байдаг байх л даа. Тодорхой, дэлгэрэхгүй мэдээллүүдийг доорх холбоосныыдаас олж уншина уу?
- http://en.wikipedia.org/wiki/Sql_injection
- Protecting yourself from SQL Injection Attacks by Ross Overstreet
- “SQLrand: Preventing SQL Injection Attacks” by Stephen W. Boyd and Angelos D. Keromytis
- “What is SQL Injection?” By CGISecurity.com
- “What is Blind SQL Injection?” By CGISecurity.com
- “SQL Injection WASC Threat Classification Entry” By The Web Application Security Consortium
- Avoid SQL injection
- PHP and SQL Injections
- SQL Injection in Login Forms
- “SQL Injection” By spidynamics.com
- SQL injection full definition and resources at SearchAppSecurity.com
- Blind SQL injection attacks explained by SearchAppSecurity.com
- SQL injection: Secure your Web applications by SearchAppSecurity.com
- SQL Injection Attacks by Example from Steve Friedl’s Unixwiz.net Tech Tips
- Advanced SQL Injection by Chris Anley
- Advanced Topics on SQL Injection Protection (Power Point) by Sam NG
- Are stored procedures safe against SQL Injection? by Santosh Kumar
- Sql Injection and ASP, ASP.NET, PHP and ColdFusion protection. Useful links by Vladimir Career
- SQL Injection Tools & Articles by Darknet
- Known SQL injection vulnerabilities since 2000 by Armorize Technologies
1 Comment:
Mash heregte medeelel bna.
Neree sql deer yag iimerhuu aldaa garaad bdagiin.
Heregte zuils bna tnx
Post a Comment