هێرشی (SQL Injection) – بهشی یهکهم: هێرشی (SQL Injection) چییه؟
ناوهڕۆكی ئهم وتاره |
پێشهکی |
گرفت و چارهسهر |
نموونهی بهکارهێنانی هێرشی (SQL Injection): |
هێرشی (SQL Injection) ڕوو دهدات کاتێک بهرنامهیهک یان وێبگهیهک زانیاری وهردهگرێت له بهکارهێنهر بۆ دروستکردنی فهرمانی (SQL) یان فهرمانی داکراو (Stored Procedure) بۆ بهکارهێنانی بۆ پهیوهندیكردن لهگهڵ بنكهدراوهكهی.
بهکارهێنانی ڕێگهچاره ئاسایییهكان، وهکوو بهکارهێنانی (SSL) یان (IPSec) وێبگهکهت ناپارێزێت له هێرشی (SQL Injection). هێرشی (SQL Injection)ی سهرکهوتوو وا دهکات بهکارهێنهرێک بتوانێت چهند فهرمانێک جێبهجێ بکات لهسهر بنكهدراوهی وێبگهکهت یان بهرنامهکهت، ئهو کاته بهکارهێنهرهکه دهتوانێت سوود لهو فهرمانانه وهربگرێت که ڕێگه دراوه بۆ بهرنامهکهی تۆ که ئهنجامیان بدات. گرفتهکه گهورهتر دهبێت ئهگهر بهرنامهکهت ههژمار (account)ێك بهکار بهێنێت که زیاد له پێویست ڕێگهی پێ درابێت بۆ پهیوهندیکردن لهگهڵ بنكهدراوهكه، بۆ نموونه ئهگهر ههژمار (account)هكهت ڕێگهی پێ درابێت به سڕینهوهی بنكهدراوهیهك، بهبێ پاراستنێکی گونجاو، بهکارهێنهرێک لهوانهیه بتوانێت ئهو کرداره ئهنجام بدات.
ئهو گرفتانهی که وا دهکهن بنكهدراوهكهت کراوه بیت بۆ هێرشی (SQL injection):
١ـ لاوازی له ڕاستکردنهوهی زانیاریی وهرگیراو له بهکارهێنهر (input validation).
٢ـ دروستکردنی فهرمانی (SQL) بهبێ بهکارهێنانی دیاریکهر (Parameter).
٣ـ بهکارهێنانی ههژمار (account) که زیاد له پێویست ڕێگهپێدراو بێت.
بهرنامهداڕێژ دهبێت بهردهوام وا دابنێ که ههموو زانیارییهكی وهرگیراو له بهکارهێنهر گرفتداره و، بهردهوام شیکردنهوهی زانیاری لهلای ڕاژهکارهوه (Server-side validation) ئهنجام بدات، ههروهها شیکردنهوهی زانیاری لهلای ڕاژهخوازیشهوه ئهنجام بدات (client-side validation) بۆ کهمکردنهوهی هاتوچۆ (round trip)ی سهر ڕاژهکار (server) و بۆ باشترکردنی بهکارهێنانی بهکارهێنهر بۆ وێبگهکه یان بهرنامهکه.
ڕێگهچارهی زانراو بۆ ڕاستکردنهوهی زانیاریی وهرگیراو له بهکارهێنهر ئهوهیه که شیکردنهوهی ئهو زانیارییانه بکرێت بۆ؛ درێژی (length)، مهودا (range) ، شێوه (format) ، جۆر(type) . ههروهها به دیاریکردنی لیستی ئهو پیتانهی که ڕێگهپێدراون بۆ نووسین لهناو (text box)هکانی وێبگهکهت یان بهرنامهکهت.
پاراستنێکی زیاتر دهکرێت به بهکارهێنانی دیاریکهر (Parameter) له ناو فهرمانهکانی (SQL) که جۆری زانیارییهكهی دیاریکراو بێت. ههروهها دهکرێت زیاتر له یهک ههژمار (account)ه له وێبگهکهت بهکار بهێنیت و، بۆ ههر مهبهستێکی دیاریکراو ئهو ههژمار (account)ه بهکار ببهیت بۆ پهیوهندیکردن لهگهڵ بنكهدراوه که ڕێگهی پێ درابێت به ئهنجامدانی تهنها فهرمانه پێویستهکان بۆ ئهو مهبهسته.
نموونهی بهکارهێنانی هێرشی (SQL Injection):
بۆ تێگهیشتن له هێرشی (SQL injection) لهو نموونهی خوارهوه بڕوانه:
ئهگهر هات و کۆدێک بهو شێوهی خوارهوه نوسرابوو:
SELECT fieldlist FROM table WHERE username = ‘$username’;
لێرهدا بهرنامهنووسهکه چاوهڕوان دهکات بهکارهێنهر ناوی بنووسێت له ناو (text box)ێک، پاشان بهرنامهکه له شوێنی گۆڕاوی (‘$username’) دایدهنێت بۆ ئهوهی زانیاریی ئهو بهکارهێنهره دهربهێنێت، بهڵام لێرهدا ئهگهر بهکارهێنهر فهرمانێکی (SQL)ی نووسی لهجیاتیی ناوی بهکارهێنهر، بۆ نموونه سڕینهوهی بنكهدراوه
‘; DROP DATABASE pubs –
ئهو کاته فهرمانی (SQL) بهو شێوهیه ئهنجام دهدرێت:
SELECT fieldlist FROM table WHERE username = ‘’; DROP DATABASE pubs –‘
لێرهدا کهوانهی یهکهم به کهوانهی دووهم دادهخرێتهوه، پاشان فهرمانێکی دیکه ئهنجام دهدرێت ئهویش سڕینهوهی بنكهدراوهی (pubs)، پاشان کهوانهی کۆتایی پشتگوێ دهخرێت به بهکارهێنانی هێمای (–) له كۆتایییهكهی. لهو نموونهیهی سهرهوه ئێمه وامان دانا که له بهرنامهکهدا هیچ ڕاستکردنهوهیهک بۆ زانیارییهكان ناکرێت که وهردهگیرێت له بهکارهێنهر ههروهها بهرنامهکه ههژمارێک بهکار دههێنێت که ڕێی پێ دراوه به سڕینهوهی ئهو بنكهدراوهیه، بهڵام له باری ڕاستی، سهرکهوتنی ئهو هێرشه وا بهئاسانی زهحمهته.
له بهشی دووهم به کورتی چۆنێتیی چوونهناو وێبگهیهک به بهکارهێنانی هێرشی (SQL Injection) به نموونه شی دهکهینهوه.