Jump to content

SQL тарилга: Засвар хоорондын ялгаа

Википедиа — Чөлөөт нэвтэрхий толь
Content deleted Content added
No edit summary
Мөр 101: Мөр 101:


== Жишээ ==
== Жишээ ==
* 2002 оны 2-р сард Jeremiah Jacks Guess.com -г SQL тарилга халдлагад өртөж болзошгүй байсныг илрүүлсэн. <ref>{{cite web|url=http://www.securityfocus.com/news/346|title=Guesswork Plagues Web Hole Reporting|publisher=[[SecurityFocus]]|date=March 6, 2002}}</ref>

* 2005 оны 11-р сарын 1-ний өдөр өсвөр насны хакер Tech Target групээс гаргадаг Тайваны мэдээллийн аюулгүй байдлын сэтгүүлийн сайтын сайт руу SQL тарилгыг ашиглан нэвтэрч, хэрэглэгчдийн мэдээллийг хулгайлсан. <ref>{{cite web|url=http://www.xiom.com/whid-2005-46|title=WHID 2005-46: Teen uses SQL injection to break to a security magazine web site|publisher=[[Web Application Security Consortium]]|date=November 1, 2005|accessdate=December 1, 2009}}</ref>

* 2006 оны 1-р сарын 13-нд [[Орос]]ын компьютерийн гэмт хэрэгтнүүд Род Айландын засгийн газрын вэбсайтрууу орж, төрийн агентлагуудтай онлайнаар бизнес эрхэлж буй хувь хүмүүсээс зээлийн картын мэдээллийг хулгайлсан.<ref>{{cite web|url=http://www.xiom.com/whid-2006-3|title=WHID 2006-3: Russian hackers broke into a RI GOV website|publisher=[[Web Application Security Consortium]]|date=January 13, 2006|accessdate=May 16, 2008}}</ref>
* 2006 оны 3-р сарын 29-нд хакер албан ёсны Энэтхэгийн засгийн газрын аялал жуулчлалын сайтын SQL тарилгын сул талыг илрүүлсэн..<ref>{{cite web|url=http://www.xiom.com/whid-2006-27|title=WHID 2006-27: SQL Injection in incredibleindia.org|publisher=[[Web Application Security Consortium]]|date=March 29, 2006|accessdate=March 12, 2010}}</ref>
* 2007 оны 6-р сарын 29-нд компьютерийн гэмт хэрэгт SQL injection ашиглан [[Microsoft]] UK вэбсайтыг устгасан.<ref>{{cite web|url=http://www.cgisecurity.net/2007/06/hacker-defaces.html|title=Hacker Defaces Microsoft U.K. Web Page|publisher=cgisecurity.net|author=Robert|date=June 29, 2007|accessdate=May 16, 2008}}</ref><ref>{{cite web|url=http://rcpmag.com/news/article.aspx?editorialsid=8762|title=Hacker Defaces Microsoft UK Web Page|publisher=Redmond Channel Partner Online|author=Keith Ward|date=June 29, 2007|accessdate=May 16, 2008}}</ref>
* 2008 оны 7-р сард Касперскийгийн Малайзын сайтыг SQL тарилга ашиглан "m0sted" хакерын бүлэг хакерджээ.
* 2008 оны 5-р сард Хятад дахь серверийн ферм нь автомат квериг автоматжуулсан SQL тарилгын халдлагад өртөмтгий SQL сервер вэбсайтуудыг илрүүлэхийн тулд [[Google]]-ийн хайлсын системийг ашигласан. <ref name="chinesefarm">{{cite web | url = https://www.pcworld.com/article/146048/mass_sql_injection_attack_targets_chinese_web_sites.html | title = Mass SQL Injection Attack Targets Chinese Web Sites | author = Sumner Lemon, IDG News Service | publisher = [[PC World (magazine)|PCWorld]] | date = May 19, 2008 | accessdate = May 27, 2008 }}</ref><ref name="attackspecifics">{{cite web | url = http://www.bloombit.com/Articles/2008/05/ASCII-Encoded-Binary-String-Automated-SQL-Injection.aspx | title = ASCII Encoded/Binary String Automated SQL Injection Attack |author=Michael Zino| date = May 1, 2008 }}</ref>
* 2009 оны 8-р сарын 17-нд АНУ-ын Хууль зүйн яам АНУ-ын иргэн Альберт Гонзалес болон хоёр орос нэр нь үл мэдэгдэх иргэнийг 130 сая кредит картын дугаарыг SQL тарилга халдлагыг ашиглан хулгайлсан хэргээр ялласан.<ref>{{cite news |url=http://news.bbc.co.uk/2/hi/americas/8206305.stm |title=US man 'stole 130m card numbers' |publisher=BBC |date=August 17, 2009 |accessdate=August 17, 2009}}</ref>
* 2009 оны арванхоёрдугаар сард халдагч 32 сая хэрэглэгчдийн нэр, нууц үг агуулсан RockYou plaintext мэдээллийн санг SQL injection халдлага ашиглан халдсан байна.<ref>{{cite news | url=https://www.nytimes.com/external/readwriteweb/2009/12/16/16readwriteweb-rockyou-hacker-30-of-sites-store-plain-text-13200.html | title = RockYou Hacker - 30% of Sites Store Plain Text Passwords | work=New York Times | first=Jolie | last=O'Dell | date=December 16, 2009 | accessdate=May 23, 2010}}</ref>
*2010 оны 7-р сарын 24-нээс 26-ны хооронд Японд болон Хятад улсын довтолгоонууд нь онлайн сүлжээнд холбогдсон томоохон дэлгүүрүүдээр ажилладаг Осака хотод байрладаг Neo Beat компаний зээлийн картын мэдээллийг интернетээр цацахын тулд SQL injection ашигласан. Довтолгооны сүлжээнд нь Izumiya Co, Maruetsu Inc, Ryukyu Jusco Co. зэрэг 7 бизнесийн түншүүд өртсөн. Мэдээллийн хулгай нь 12,191 хэрэглэгчидэд нөлөөлсөн байна. 2010 оны 8-р сарын 14-ний байдлаар гуравдагч этгээд Хятадын бараа, үйлчилгээ худалдан авахад 300 гаруй төрлийн зээлийн карт ашиглагдаж байна гэж мэдээлсэн.
* 2010 оны 11-р сарын 8-нд Британий Хааны Тэнгисийн цэргийн вэбсайт нь SQL injection ашигласан TinKode нэртэй Румын хакераар эвдэгдсэн.<ref>[http://www.bbc.co.uk/news/technology-11711478 Royal Navy website attacked by Romanian hacker] ''BBC News'', 8-11-10, Accessed November 2010</ref><ref>{{cite web|url=http://news.sky.com/skynews/Home/World-News/Stuxnet-Worm-Virus-Targeted-At-Irans-Nuclear-Plant-Is-In-Hands-Of-Bad-Guys-Sky-News-Sources-Say/Article/201011415827544 |title=Super Virus A Target For Cyber Terrorists
|author=Sam Kiley |date=November 25, 2010 |accessdate=November 25, 2010}}</ref>
* 2011 оны 3-р сарын 27-ны өдөр [http://www.mysql.com mysql.com], [[MySQL]]-ийн албан ёсны вэб хуудсийг хакер SQL сохор тарилга ашиглан хэлэлцээр хийсэн.<ref>{{cite web|url=http://blog.sucuri.net/2011/03/mysql-com-compromised.html|title=MySQL.com compromised|publisher=[[sucuri]]}}</ref>
* 2012 оны долдугаар сард хакерын бүлэг Yahoo-аас 450,000 нэвтрэх эрх хулгайлсан гэж мэдэгдсэн байна. Бүлэг нь нэгдэлд суурилсан SQL тарилгын аргыг ашиглан [[Yahoo]]-ийн аюулгүй байдлыг зөрчсөн байна.<ref>Chenda Ngak. [http://www.cbsnews.com/8301-501465_162-57470956-501465/yahoo-reportedly-hacked-is-your-account-safe/ "Yahoo reportedly hacked: Is your account safe?"], CBS News. July 12, 2012. Retrieved July 16, 2012.</ref><ref>http://www.zdnet.com/450000-user-passwords-leaked-in-yahoo-breach-7000000772/</ref>
* 2013 оны 6-р сарын 27-нд хакерын бүлэг "RedHack" нь Словакийн захиргааны сайтыг эвдсэн.<ref>{{Cite news | title=RedHack Breaches Istanbul Administration Site, Hackers Claim to Have Erased Debts | url=http://news.softpedia.com/news/RedHack-Breaches-Istanbul-Administration-Site-Hackers-Claim-to-Have-Erased-Debts-364000.shtml}}</ref> Тэд ус, хий, Интернет, цахилгаан, телефон утасны компаниудад өр төлбөрийг арилгах боломжтой гэж зарласан. Үүнээс гадна, тэд өглөө эрт бусад өртэй хүмүүсийг нэвтэрж, өрийн мэдээллийг арилгахын тулд админ хэрэглэгчийн нэр, нууц үгийг нийтэлжээ. Тэд Твиттерээс энэ мэдээллээ зарласан.<ref>{{Cite news | title=Redhack tweet about their achievement | url=https://twitter.com/RedHack_EN/statuses/350461821456613376 }}</ref>
* 2014 оны 3-р сарын 7-нд Жонс Хопкинсын их сургуулийн албан тушаалтнууд "Биотехнологийн Интернетийн Серверүүд" нь "Хьюки" нэртэй Anonymous хакерын "SQL тарилга" халдлагад өртөж, "хакерчивист" группын "РaptorSwag" Хакерууд 878 сурагч, ажилтнуудын хувийн мэдээллийг задалсан.<ref>http://articles.baltimoresun.com/2014-03-07/news/bs-md-hopkins-servers-hacked-20140306_1_engineering-students-identity-theft-server</ref>
* 2015 оны аравдугаар сард SQL тарилга халдлага нь Британий харилцаа холбооны компани TalkTalk-ийн серверүүдээс 156,959 хэрэглэгчдийн хувийн нарийн мэдээллийг хулгайлахад ашиглагдсан.<ref>https://ico.org.uk/about-the-ico/news-and-events/news-and-blogs/2016/10/talktalk-gets-record-400-000-fine-for-failing-to-prevent-october-2015-attack/</ref>
== Уншвал зохих ==
{{Portal|Software Testing}}
* [[Code injection]]
* [[Cross-site scripting (XSS) халдлага]]
* [[Metasploit Project]]
* [[OWASP]] Open Web Application Security Project
* [[SGML entity]]
* [[Uncontrolled format string]]
* [[w3af]]
* [[Web application security]]
==Холбоос==
==Холбоос==
{{reflist}}
{{reflist}}
== Гадаад холбоосууд ==
* [http://www.techyfreaks.com/2012/05/manual-sql-injection-tutorial.html Manual Sql Injection Tutorial] By The Ajay Devgan
* [http://www.websec.ca/kb/sql_injection SQL Injection Knowledge Base], by Websec.
* [http://www.sqlinjectionwiki.com/ SQL Injection Wiki]
* [http://projects.webappsec.org/SQL-Injection WASC Threat Classification - SQL Injection Entry], by the Web Application Security Consortium.
* [https://docs.google.com/leaf?id=0BykNNUTb95yzYTRjMjNjMWEtODBmNS00YzgwLTlmMGYtNWZmODI2MTNmZWYw&sort=name&layout=list&num=50 Why SQL Injection Won't Go Away], by Stuart Thomas.
* [http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet SQL Injection Prevention Cheat Sheet], by OWASP.
* [http://sqlmap.org/ [[sqlmap]]: automatic SQL injection and database takeover tool]
* [http://go.microsoft.com/?linkid=9707610 SDL Quick security references on SQL injection] by Bala Neerumalla.
* [https://arstechnica.com/information-technology/2016/10/how-security-flaws-work-sql-injection/ How security flaws work: SQL injection]
* [https://www.netsparker.com/blog/web-security/sql-injection-cheat-sheet/ SQL Injection Cheat Sheet] by Netsparker

17:29, 5 Арваннэгдүгээр сар 2017-ий байдлаарх засвар

SQL тарилга нь өгөгдөлд тулгуурласан хэрэглээний програмуудад халдахад хэрэглэгддэг кодыг тарих техник юм. SQL тарилга нь хэрэглээний програмын програм хангамжийн аюулгүй байдлын эмзэг байдлыг ашиглах ёстой. Жишээл нь SQL илэрхийлэлд агуулагдсан тэмдэгт мөрийн esc тэмдэгтүүд нь буруугаар шүүгдсэн эсвэл хэрэглэгч хатуу тогтсон дүрмийн дагуу оролтыг оруулаагүй тохиололд санаанд оромгүй буруу үр дүн гаргадаг. SQL тарилга нь ихэвчилэн вэбсайтын халдлагын вектор гэж нэрлэгддэг боловч ямар ч төрлийн SQL өгөгдлийн санд халдахад ашиглагдах боломжтой. SQL тарилга халдлага нь гүйлгээг зогсоох эсвэл дансны үлдэгдлийг өөрчилөх, систем дэх бүх өгөгдлийг бүрэн задлах, өгөгдлийг устгах эсвэл боломжгүй болгох мөн өгөгдлийн сангийн серверийн администраторын эрхтэй болох гэх мэтээр хүчингүй болгох асуудлыг үүсгэх мөн одоо байгаа өгөгдлүүдийг хөндлөнгөөс өөрчилөх боломжийг халдагчид олгодог. 2012 оны судалгаагаар компаны вэбсайт сар бүр дунджаар 4 халдлагад өртдөг бол жижиг худалдааны газрууд бусад салбаруудаас хоёр дахин их халдлагыг хүлээн авдаг байна.

Түүх

SQL тарилгын хамгийн анхны нийтийн хэлэлцүүлэг 1998 оноос эхэлжээ.

Хэлбэр

SQL тарилга(SQLI) Нээлттэй Вэб Програмын Аюулгүй байдлын Төслийн (Open Web Security Project) 2007 болон 2010 оны топ 10 вэб програмын эмзэг байдлын нэгд тооцогдож байсан. 2013 онд SQLI нь OWASP-ийн топ 10 халдлагын нэгдүгээрт эрэмбэлэгдсэн байсан. SQL тарилгын дөрвөн гол дэд ангилал байдаг:

  • Сонгодог SQLI
  • Сохор буюу таамаглал SQL тарилга
  • Өгөгдлийн сан удирдах систем – тусгай SQLI
  • Нийлмэл SQLI
  • SQL injection + хангалтгүй нотолгоо
  • SQL injection + DDoS халдлага[1]
  • SQL injection + DNS hijacking халдлага[2]
  • SQL injection + XSS[3]

Storm Worm бол нийлмэл SQLI-ийн нэг хэлбэр. Энэ ангилал нь SQLI-ийн төлвийн 2010 он хүртэлх хугацааны хөгжлийн хувьд авч үзсэн ангиллын төлөөлөл болно.

Техникийн хэрэгжүүлэлтүүд

Буруу шүүгдсэн esc тэмдэгтүүд

SQL тарилгын энэ хэлбэрийн тохиолдолд хэрэглэгчийн оролт дох esc тэмдэгтүүд шүүгдээгүй үед SQL илэрхийлэлд дамжуулагдана. Үүний үр дүнд SQL илэрхийллүүдийн боломжит арга заль програмын эцсийн хэрэглэгчээр өгөгдлийн сан дээр хийгдэнэ.

Дараах мөр код энэ эмзэг байдлыг харуулж байна:

илэрхийлэл = "SELECT * FROM users WHERE name = '" + userName + "';"

Энэ SQL код нь хэрэглэгч хүснэгтээс заасан хэрэглэгчийн бичлэгийг татахад зориулагдсан. Гэсэн хэдий ч “username” хувьсагч нь хорт хэрэглэгчийн тодорхой аргаар бүтээгдсэн бол код зохиогчийн зорилгоос илүүг хийх боломжтой. Жишээлбэл дараах зурагт харуулсан нэвтрэх хуудсан дээр жишээ авч үзье. Хэрэглэгч өөрийн нэр нууц үгийг зурагт харуулснаар оруулахад буруу өгөгдөл оруулсан үед доорх зурагт харагдаж буй мэдээлэл гарна.

Файл:LegalUserInput.png
энгийн хэрэглэгчийн оролт

Хэрэглэгч стандарт өгөгдөл оруулах үед SQL илэрхийлэл дараах хэлбэрээр биелэнэ. Энэ үед query нь нөхцлийг шалгаад өгөгдсөн нөхцөл бүхий бичлэг байгаа эсэхийг ямар ч алдаагүйгээр шалгаад үр дүнг буцаана.

SELECT * FROM users WHERE username = 'alex' AND userpass = 'john';

Хэрэглэгчийн нэр нууц үгийн оронд “’ OR ‘1’=’1” гэсэн оролтыг өгөхөд л өгөгдлийн сангаас мэдээлэл шүүж гаргах SQL query-ны бүтэц өөрчлөгдөж амжилттай нэвтэрж чадсаныг харж байна.

Файл:IllegalUserInput.png
хортой хэрэглэгчийн оролт

Хэрэглэгч стандарт бус өгөгдөл оруулах үед SQL илэрхийлэл дараах хэлбэрээр биелэнэ:

SELECT * FROM users WHERE username = '' OR '1'='1' AND userpass = '' OR '1'='1';

Эсвэл query-ний үлдсэн хэсгийг хаахын тулд тайлбарыг ашиглах(SQL 3 төрлийн тайлбарыг ашигладаг ). Бүх гурван мөрийн төгсгөлд зай авдаг:

' OR '1'='1' --
' OR '1'='1' ({
' OR '1'='1' /* 

Дараах SQL илэрхийллийн аль нэгийг эцэг хэл дээр гүйцэтгэдэг:

SELECT * FROM users WHERE name = '' OR '1'='1';
SELECT * FROM users WHERE name = '' OR '1'='1' -- ';

Хэрвээ энэ кодыг баталгаажуулах процедурт ашиглах бол энэ жишээ нь өгөгдлийн талбар бүрийн (*) сонголтыг бүх хэрэглэгчидээс гэхээсээ илүүтэйгээр кодерийн хувьд нэг тодорхой хэрэглэгчийн нэр ашиглагдаж болно, учир нь '1'='1' нь үргэлж үнэн байдаг. Доорх зурганд харагдаж буйгаар хэрэглэгчийн нэр эсвэл нууц үгийн аль нэг талбарт энэхүү ололтыг оруулан нэвтэх товчийг дархад bat гэсэн хэрэглэгч байсан ч байгаагүй ч Suppliers хүснэгт устах болно.

Файл:DangerousSQLI.png
аюултай хэрэглэгчийн хортой оролт

Хэрэглэгч дээрх шиг стандарт бус өгөгдөл оруулах үед SQL илэрхийлэл дараах хэлбэрээр биелэнэ.

SELECT * FROM users WHERE username = 'bat';DROP TABLE Suppliers;

Доорх илэрхийлэлд “userName”-ийн дараах утга нь хэрэглэгчийн хүснэгтийн устгал мөн түүнчлэн “userInfo” хүснэгтийн(бүх хэрэглэгчийн мэдээллийн хувьд) бүх өгөгдөлийг сонгоход хүргэдэг, API ашиглан олон тооны илэрхийллийг зөвшөөрдөг. a';DROP TABLE users; SELECT * FROM userinfo WHERE 't' = 't Энэ оролт нь эцсийн SQL илэрхийллийг дараах байдлаар тодорхойлно:

SELECT * FROM users WHERE name = 'a';DROP TABLE users; SELECT * FROM userinfo WHERE 't' = 't';

Ихэнхи SQL серверийн шийдлүүд нь иймэрхүү байдлаар нэг илэрхийлэл бүхий олон илэрхийллийг гүйцэтгэхийг зөвшөөрдөг боловч PHP-ийн mysql_query() функц гэх мэт зарим SQL API-ууд нь аюулгүй байдлын үүднээс үүнийг зөвшөөрдөггүй. Энэ нь халдагчид бүхэлд нь тусдаа query-нуудад тарилга хийхээс урьдчилан сэргийлж байгаа боловч, query-д өөрчилөлт оруулахыг зогсоодоггүй.

Буруу төрлийн боловсруулалт

Энэ төрлийн SQL тарилгын хэлбэр нь хэрэглэгч заавал хатуу тогтсон дүрмийн дагуу өгөгдлийг оруулах албагүй байдагтай холбоотойгоор эсвэл төрлийн хязгаарлалтанд шалгалт хийгдээгүй үед гардаг. Энэ нь тоон талбарыг SQL илэрхийлэлд ашиглах үед хэрэгжиж болох юм. Гэхдээ програмист хэрэглэгчийн оруулсан оролт тоо эсэхийг шалгах шалгалтыг хийдэггүй. Жишээ нь: илэрхийлэл := "SELECT * FROM userinfo WHERE id =" + a_variable + ";"

Энэ илэрхийллээс авч үзэхэд a_variable нь "id" талбарт хамааралтай тоо байхыг хүссэн тодорхой байна. Гэсэн хэдий ч хэрвээ энэ нь үнэн хэрэгтээ тэмдэгт байвал эцсийн хэрэглэгч өөрийн сонголтоороо илэрхийллийг гуйвуулж болзошгүй, ингэснээр esc тэмдэгтүүдийг ашиглах шаардлагагүй болно. Жишээлбэл a_variable - г ийм хэлбэртэйгээр бичиж болно:

1;DROP TABLE users

"users" хүснэгтийг өгөгдлийн сангаас устгана, мөн SQL ийм хэлбэртэй болно:

SELECT * FROM userinfo WHERE id=1; DROP TABLE users;

Сохор SQL тарилга

Сохор SQL тарилга нь вэб програм SQL тарилгад эмзэг байх үед хэрэглэгддэг боловч тарилгын үр дүн халдагчид харагдахгүй. Эмзэг байдал бүхий хуудас нь өгөгдлийг харуулдаггүй боловч хуудсанд дуудагдсан хууль ёсны SQL илэрхийлэлд хийгдсэн логик илэрхийллийн үр дүнгээс хамаарч өөр өөрөөр харагддаг. Энэ төрлийн халдлага нь уламжлалт байдлаар хугацаа их шаарддаг гэж үздэг тул шинэ илэрхийлэл нь сэргээгдсэн хэсэг тус бүрт зориулж бүтээгдсэн байх ёстой бөгөөд түүний бүтцээс хамааран энэ халдлага нь олон удаа амжилтгүй хүсэлтээс бүрдэх магадлалтай.

Хоёрдугаар дарааллын SQL тарилга

Хоёрдугаар дарааллын SQL тарилга нь оруулсан утгууд шууд ажиллахаас илүүтэй хадгалагддаг хортой командыг агуулж буй үед тохиолддог. Зарим тохиолдолд програм нь SQL илэрхийллийг зөвөөр кодчилдлог бөгөөд үүнийг зөв SQL гэж хадгалдаг. Дараа нь SQL тарилгаас хамгаалах ямар нэг хяналтгүйгээр програмын өөр нэг хэсэг хадгалсан SQL илэрхийллийг ажиллуулах боломжтой. Энэ халдлага нь оруулсан утгуудыг дараа нь яаж ашигласан талаар илүү их мэдлэгтэй байхыг шаарддаг. Автоматжуулсан вэб програмын аюулгүй байдлын сканерууд энэ төрлийн SQL тарилгыг амархан илрүүлэх боломжгүй.

Хор хөнөөллийг бууруулах

SQL тарилга нь алдартай халдлага бөгөөд энгийн аргаар амархан сэргийлэх боломжтой.

Тодорхой хэлбэрээр бичигдсэн илэрхийлэл

Хөгжүүлэлтийн ихэнхи протформууд дээр параметрүүдтэй ажилладаг тодорхой хэлбэрээр бичигдсэн илэрхийллүүд нь хэрэглэгчийн оролтыг илэрхийлэлд оруулаахын оронд ашиглах боломжтой. Тиймээс SQL тарилга нь энгийнээр үл мэдэх(магадгүй хүчингүй) параметрийн утга гэж боловсруулагддаг.

Кодчилох түвшинд хэрэгжүүлэх

Объект харилцааны зураглалын санг ашиглан SQL код бичих шаардлагаас зайлсхийдэг. ORM сан нь объект хандалтат кодоос параметржүүлсэн SQL илэрхийллийг бий болгодог.

Зайлсхийх нь

Шууд бус боловч тарилгын эсрэг алдаа гардаг арга нь SQL дэх тусгай утгатай тэмдэгтүүдийг хасах явдал юм. SQL DBMS-ийн гарын авлага нь ямар тэмдэгтүүд нь тусгай утгатай байхыг тайлбарладаг бөгөөд ингэхийн тулд хөрвүүлэгч хэрэгтэй тэмдэгтүүдийн дэлгэрэнгүй жагсаалтыг бий болгох боломжийг олгодог. Жишээлбэл хүчинтэй SQL тэмдэгтийн хэлбэрт параметрд дан ганц хашилт(‘) байх тохиолдолд (“) давхар хашилтаар солигдох ёстой. Жишээ нь PHP –д mysqli_real_escape_string(); функцийг ашиглан параметраас зугтахад түгээмэл ашигладаг. SQL query-ыг илгээхээсээ өмнө:

$mysqli = new mysqli('hostname', 'db_username', 'db_password', 'db_name');
$query = sprintf("SELECT * FROM `Users` WHERE UserName='%s' AND Password='%s'",
                  $mysqli->real_escape_string($username),
                  $mysqli->real_escape_string($password));
$mysqli->query($query);

Энэ функц нь backslash-уудыг дараах тэмдэгтүүдээр бэлтгэдэг: \x00, \n, \r, \, ', " болон \x1a. Энэ функц нь MySQL руу query илгээхээс өмнө өгөгдлийг аюулгүй болгоход ашигладаг. PostgreSQL-д зориулсан pg_escape_string() зэрэг PHP –д олон төрлийн өгөгдлийн санд зориулсан функцүүд байдаг.

Хээ шалгах

Хэрэв өгөгдсөн төрөлд тэдгээрийн утга хүчинтэй төлөөлөл байгаа бол бүхэл тоо, бутархай, бүүлэн, тэмдэгт параметрууд шалгагдах боломжтой.

Өгөгдлийн сангийн зөвшөөрөл

Вэб програмын ашигладаг нэвтрэх хэсгийн өгөгдлийн сан дээр зөвшөөрлийг зевхен хэрэгцээнд нь хязгаарлах нь веб програм дахь аливаа алдаануудыг ашиглах SQL тарилгын халдлагуудын үр нөлөөг багасгахад тусална.

Жишээ

  • 2002 оны 2-р сард Jeremiah Jacks Guess.com -г SQL тарилга халдлагад өртөж болзошгүй байсныг илрүүлсэн. [4]
  • 2005 оны 11-р сарын 1-ний өдөр өсвөр насны хакер Tech Target групээс гаргадаг Тайваны мэдээллийн аюулгүй байдлын сэтгүүлийн сайтын сайт руу SQL тарилгыг ашиглан нэвтэрч, хэрэглэгчдийн мэдээллийг хулгайлсан. [5]
  • 2006 оны 1-р сарын 13-нд Оросын компьютерийн гэмт хэрэгтнүүд Род Айландын засгийн газрын вэбсайтрууу орж, төрийн агентлагуудтай онлайнаар бизнес эрхэлж буй хувь хүмүүсээс зээлийн картын мэдээллийг хулгайлсан.[6]
  • 2006 оны 3-р сарын 29-нд хакер албан ёсны Энэтхэгийн засгийн газрын аялал жуулчлалын сайтын SQL тарилгын сул талыг илрүүлсэн..[7]
  • 2007 оны 6-р сарын 29-нд компьютерийн гэмт хэрэгт SQL injection ашиглан Microsoft UK вэбсайтыг устгасан.[8][9]
  • 2008 оны 7-р сард Касперскийгийн Малайзын сайтыг SQL тарилга ашиглан "m0sted" хакерын бүлэг хакерджээ.
  • 2008 оны 5-р сард Хятад дахь серверийн ферм нь автомат квериг автоматжуулсан SQL тарилгын халдлагад өртөмтгий SQL сервер вэбсайтуудыг илрүүлэхийн тулд Google-ийн хайлсын системийг ашигласан. [10][11]
  • 2009 оны 8-р сарын 17-нд АНУ-ын Хууль зүйн яам АНУ-ын иргэн Альберт Гонзалес болон хоёр орос нэр нь үл мэдэгдэх иргэнийг 130 сая кредит картын дугаарыг SQL тарилга халдлагыг ашиглан хулгайлсан хэргээр ялласан.[12]
  • 2009 оны арванхоёрдугаар сард халдагч 32 сая хэрэглэгчдийн нэр, нууц үг агуулсан RockYou plaintext мэдээллийн санг SQL injection халдлага ашиглан халдсан байна.[13]
  • 2010 оны 7-р сарын 24-нээс 26-ны хооронд Японд болон Хятад улсын довтолгоонууд нь онлайн сүлжээнд холбогдсон томоохон дэлгүүрүүдээр ажилладаг Осака хотод байрладаг Neo Beat компаний зээлийн картын мэдээллийг интернетээр цацахын тулд SQL injection ашигласан. Довтолгооны сүлжээнд нь Izumiya Co, Maruetsu Inc, Ryukyu Jusco Co. зэрэг 7 бизнесийн түншүүд өртсөн. Мэдээллийн хулгай нь 12,191 хэрэглэгчидэд нөлөөлсөн байна. 2010 оны 8-р сарын 14-ний байдлаар гуравдагч этгээд Хятадын бараа, үйлчилгээ худалдан авахад 300 гаруй төрлийн зээлийн карт ашиглагдаж байна гэж мэдээлсэн.
  • 2010 оны 11-р сарын 8-нд Британий Хааны Тэнгисийн цэргийн вэбсайт нь SQL injection ашигласан TinKode нэртэй Румын хакераар эвдэгдсэн.[14][15]
  • 2011 оны 3-р сарын 27-ны өдөр mysql.com, MySQL-ийн албан ёсны вэб хуудсийг хакер SQL сохор тарилга ашиглан хэлэлцээр хийсэн.[16]
  • 2012 оны долдугаар сард хакерын бүлэг Yahoo-аас 450,000 нэвтрэх эрх хулгайлсан гэж мэдэгдсэн байна. Бүлэг нь нэгдэлд суурилсан SQL тарилгын аргыг ашиглан Yahoo-ийн аюулгүй байдлыг зөрчсөн байна.[17][18]
  • 2013 оны 6-р сарын 27-нд хакерын бүлэг "RedHack" нь Словакийн захиргааны сайтыг эвдсэн.[19] Тэд ус, хий, Интернет, цахилгаан, телефон утасны компаниудад өр төлбөрийг арилгах боломжтой гэж зарласан. Үүнээс гадна, тэд өглөө эрт бусад өртэй хүмүүсийг нэвтэрж, өрийн мэдээллийг арилгахын тулд админ хэрэглэгчийн нэр, нууц үгийг нийтэлжээ. Тэд Твиттерээс энэ мэдээллээ зарласан.[20]
  • 2014 оны 3-р сарын 7-нд Жонс Хопкинсын их сургуулийн албан тушаалтнууд "Биотехнологийн Интернетийн Серверүүд" нь "Хьюки" нэртэй Anonymous хакерын "SQL тарилга" халдлагад өртөж, "хакерчивист" группын "РaptorSwag" Хакерууд 878 сурагч, ажилтнуудын хувийн мэдээллийг задалсан.[21]
  • 2015 оны аравдугаар сард SQL тарилга халдлага нь Британий харилцаа холбооны компани TalkTalk-ийн серверүүдээс 156,959 хэрэглэгчдийн хувийн нарийн мэдээллийг хулгайлахад ашиглагдсан.[22]

Уншвал зохих

Холбоос

  1. "WHID 2009-1: Gaza conflict cyber war". Xiom. Татаж авсан: 2011-06-03.
  2. [1] Архивлагдсан Зургаадугаар сар 18, 2009 at the Wayback Machine
  3. "Third Wave of Web Attacks Not the Last". Dark Reading. Татаж авсан: 2012-07-29.
  4. "Guesswork Plagues Web Hole Reporting". SecurityFocus. March 6, 2002.
  5. "WHID 2005-46: Teen uses SQL injection to break to a security magazine web site". Web Application Security Consortium. November 1, 2005. Татаж авсан: December 1, 2009.
  6. "WHID 2006-3: Russian hackers broke into a RI GOV website". Web Application Security Consortium. January 13, 2006. Татаж авсан: May 16, 2008.
  7. "WHID 2006-27: SQL Injection in incredibleindia.org". Web Application Security Consortium. March 29, 2006. Татаж авсан: March 12, 2010.
  8. Robert (June 29, 2007). "Hacker Defaces Microsoft U.K. Web Page". cgisecurity.net. Татаж авсан: May 16, 2008.
  9. Keith Ward (June 29, 2007). "Hacker Defaces Microsoft UK Web Page". Redmond Channel Partner Online. Татаж авсан: May 16, 2008.
  10. Sumner Lemon, IDG News Service (May 19, 2008). "Mass SQL Injection Attack Targets Chinese Web Sites". PCWorld. Татаж авсан: May 27, 2008.
  11. Michael Zino (May 1, 2008). "ASCII Encoded/Binary String Automated SQL Injection Attack".
  12. "US man 'stole 130m card numbers'". BBC. August 17, 2009. Татаж авсан: August 17, 2009.
  13. O'Dell, Jolie (December 16, 2009). "RockYou Hacker - 30% of Sites Store Plain Text Passwords". New York Times. Татаж авсан: May 23, 2010.
  14. Royal Navy website attacked by Romanian hacker BBC News, 8-11-10, Accessed November 2010
  15. Sam Kiley (November 25, 2010). "Super Virus A Target For Cyber Terrorists". Татаж авсан: November 25, 2010.
  16. "MySQL.com compromised". sucuri.
  17. Chenda Ngak. "Yahoo reportedly hacked: Is your account safe?", CBS News. July 12, 2012. Retrieved July 16, 2012.
  18. http://www.zdnet.com/450000-user-passwords-leaked-in-yahoo-breach-7000000772/
  19. "RedHack Breaches Istanbul Administration Site, Hackers Claim to Have Erased Debts".
  20. "Redhack tweet about their achievement".
  21. http://articles.baltimoresun.com/2014-03-07/news/bs-md-hopkins-servers-hacked-20140306_1_engineering-students-identity-theft-server
  22. https://ico.org.uk/about-the-ico/news-and-events/news-and-blogs/2016/10/talktalk-gets-record-400-000-fine-for-failing-to-prevent-october-2015-attack/

Гадаад холбоосууд