حمله SQL Injection Attack چیست؟ نحوه جلوگیری از آسیب پذیری تزریق SQL

عکس پروفایل نویسنده

@برنامهتئو سلنیوس

اگر فقط یک ساعت فرصت داشتم درختی را خرد کنم ، 45 دقیقه اول را به تماشای فیلم های YouTube درباره آن می گذراندم

آسیب پذیری های تزریق SQL هنگامی ایجاد می شود که شما به صورت ناامن پرس و جوهای پایگاه داده را ایجاد می کنید و داده های نامعتبر به عنوان بخشی از ساختار جستجوی SQL تفسیر می شوند.

چگونه می توان از آسیب پذیری های تزریق SQL جلوگیری کرد؟

بهترین راه برای جلوگیری از آسیب پذیری های تزریق SQL استفاده از چارچوبی است که به شما امکان می دهد بااستفاده از کوئری ها را ایجاد و پارامتر کنید. ORM (Object Relational Mapper) گزینه خوبی است. برای لایه های امنیتی اضافی ، تمام ورودی را تأیید کرده و از محصول WAF (Firewall Application Web) استفاده کنید.

یک مثال ساده

فرض کنید ما یک برنامه جاوا داریم که به کاربران امکان می دهد اسناد خود را با شناسه بازیابی کنند. ما ممکن است چیزی شبیه به این انجام دهیم:

String query = "SELECT * FROM documents WHERE ownerId=" + authContext.getUserId() + " AND documentName = '" + request.getParameter("docName") + "'";
executeQuery(query);

بنابراین اگر شناسه کاربر 25 باشد و URL چیزی شبیه به آن باشد https://www.example.com/documents/؟docName=ABC123، سپس پرس و جو خواهد بود:

SELECT * FROM documents WHERE ownerId=25 AND documentName='ABC123';

تا کنون خیلی خوب. اما اگر URL باشد چه می کنید https://www.example.com/documents/؟docName=ABC123’OR’1’=’1؟

اکنون پرس و جو زیر را به دست می آوریم که تمام اسناد را برای همه کاربران برمی گرداند …

Leave a reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>