امنیت در ریلز

امنیت در ریلز

در قسمت های قبل با ویژگی های مهم model اشتا شدید از جمله ولید کردن متغیر هامون قبل از این که وارد دیتابیس بشن ( پست قبلی ) ولی همین ولید کردن کافی نیست چون فقط برای دیتابیس کاربرد دارن ، هکر ممکنه با دستکاری ورودی ها مارو هک کنه ( البته از لحاظه دیتابیس مشکلی نداریم چون تو جلسه پیش جلشو گرفتیم ) ، می ریم با هم چند روش رو امتحان کنیم

1- گرفتن ورودی از کاریر

 

خوب حالا فرض کنید هکر چه کد هایی می تونه جایگزین اسمش کنه مثلا کله فایل هامونو پاک کنه یا اطلاعات کاربر هارو از دیتابیس بگیره !

بهترین راه برای جلوگیری از این روش اینه که ما نوع رندر و خروجی رو مشخص کنیم

2-تزریق به پایگاه داده

فرض کنید برای کاربر لینک فراموشی پسورد فرستادید قطعا از یه توکن برای پیدا کردن کاربر استفاده می کنید و خوب اگر کاربر جای توکن شما عدد 0 یا 1 بزاره چی ؟ به همین سادگی هک می شید (که اکثرا هم کسی هواسش به این قسمت نیست 😈) حتما براتون سوال پیش اومده که چطور ؟ به کد زیر دقت کنید

خوب فکر کنم تا الان متوجه شدید که 0 و 1 یه نوع بولین هست وما باید اون رو تغیر بدیم به استیرینگ

نکته:برای تبدیل داخل کنترلر و… شما می تونید از to_s استفاده کنید ( var.to_s)

یکی از اشتباه برتامه تویس های ریلز ایته که می خوان sql رو دستی بنویسن و این ممکنه باعثه یه شکاف بشه داخله اپلیکیشنتون به کد زیر توجه کتید

خوب حالا فرض کنید هکر با گزاشتن یه and یا or ساده چه کار ها که با دیتایستون نمی کنه مثلا :

بهترین روش برای جلوگیری از این حملات استفاده از سیمبل های ریلز یا رزرو کردن  هست  به کد زیر توجه کتید

3-فراخوان

یکی دیگه از راه های نفوذ اطلاعاتی است که کاربر در دیتابیس ذخیره می کند به کد زیر توجه کتید

همون جور که معلومه کاربر می تونه با مدلمون هر کا ری کنه برای جلوگیری از این کار باید از کمکی ها استفاده کنیم

sanitize

html_scape

html_safe

strip_tags

strip_links

نکنه : کاربر می تونه جاوااسکریپت اضافه کنه شما باید توسط کمکی های بالا جلوشوتو بگیرید و یا با regex داخله مدل جلوشو بگیرید !

4-دیگر

سعی کنید از ssl استفاده کنید

از WEBrick فقط برای پروژه های لوکال استفاده کنید و به جاش از انجینکس و اپاچی استفاده کنید

همیشه پسورد هارو هش کنید ( برای rails  از جم bcrypt استفاده کنید)

پسوتد فایل های ارسالی توسط کاربر رو چک کنید !