نماد سایت شرکت آرسس

چند روش وجود دارد برای اینکه وب سایت امنی داشته باشیم؟/ بخش دوم

وب - وب سایت - سایت - امنیت - فناوری - فناوری اطلاعات - امن - نرم افزار - حفره - حفره امنیتی - WEB - WEB SITE - SITE - Network - secure - HTTPS - Security - Software - SQL Injection

وب - وب سایت - سایت - امنیت - فناوری - فناوری اطلاعات - امن - نرم افزار - حفره - حفره امنیتی - WEB - WEB SITE - SITE - Network - secure - HTTPS - Security - Software - SQL Injection

۲- جلوگیری از SQL Injection


از میان روشهایی که برای حمله به وب سایت وجود دارد یکی از رایج ترین روش ها استفاده از SQL Injection است. به وسیله این مکانیزم فردی که قصد حمله به یک وب سایت را دارد، در فیلد های ورودی دستورات SQL را به روشی خاص نوشته و بدین وسیله می توانند اطلاعات موجود در بانک اطلاعاتی را مشاهده کند یا به راحتی بوسیله کاربری که دسترسی مدیریتی دارد به سایت وارد شود، حتی احتمال اینکه داده های موجود در بانک اطلاعاتی نیز حذف شوند وجود دارد. جلوگیری از حملات SQL Injection به راحتی قابل پیاده سازی است، اکثر زبان های برنامه نویسی مانند سی شارپ یا جاوا، برای اجرای کوئری ها بر روی بانک های اطلاعات از قابلیتی به نام پارامترها پشتیبانی می کنند که از پارامترها برای قراردادن مقادیر ورودی کاربر در کوئری استفاده می کنند. برای مثال، کوئری زیر را در نظر بگیرید که برای گرفتن یک کاربر بر اساس نام کاربری استفاده می شود (در زبان C Sharp):

var query = "select * from Users where Username = N'" + username + "';";
...

در صورتی که Query به صورت بالا اجرا شود، کاربری که به SQL Injection آشنایی داشته باشد به راحتی می تواند کوئری های مورد نظر خود را بر روی سرور اجرا کند، اما می توان بوسیله پارامتر ها این مشکل را حل کرد:

var query = "select * from Users where username = @p1";
var command = new SqlCommand(query,cnn);
command.Parameters.Add(new SqlParameter("p1",username));

با اجرای Query به صورت بالا، امکان SQL Injection دیگر وجود نخواهد داشت. علاوه بر اینکه می توان از پارامترها استفاده کرد، استفاده از ORM ها نیز راهکاری دیگر برای جلوگیری از حملات SQL Injection است، اکثر زبان های برنامه نویسی از ORM ها پشتیبانی می کنند، برای مثال، اگر در سی شارپ از Entity Framework یا در جاوا از Hibernate استفاده می کنید، نیازی نیست که برای حملات SQL Injection نگرانی داشته باشید.


 

خروج از نسخه موبایل