سلام محمد قاسمی هستم و توی این پست قرار در مورد برنامه نویسی امن صحبت کنم
اولین موردی که میخوام بهش اشاره کنم مقابله در برابر حملات اسکریپت نویسی فرا وبگاهی یا xss هست
حملات xss بیشتر در ورودی ها صورت میگیرد که پالایش نشده و فیلتر نشده باشند
اما فقط این نیست! حملات xss ممکن است در هر جایی رخ دهد . برای مثال در فایل اپلودر ها .
وقتی یه فایل اپلودر فایلی رو اپلود میکنه متوجه نام فایل هم میشود
حالا فکر کنید ما پیلود xss را در نام فایل وارد کرده باشیم و برای مثال از فرمتی نامناسب استفاده کرده باشیم
سایت اروری به ما میدهد که فایل .... با فرمت نامناسب اپلود شده است
حالا چون سایت نام فایل را به ما نشان میدهد کد ما هم اجرا خواهد شد به این صورت :
حالا اگر کد php سایت را ببینیم متوجه میشویم که بدون فیلتر کردن نام فایل ان را مینویسد:
متغیر file_name$ بدون هیچ فیلترینگی در یک تگ p قرار میگیرد
حالا اگر به صفحه نگاه کنیم نام فایل را نمی بینیم:
دلیلش این است که پیلود ما در سورس سایت قرار میگیرد و اجرا میشود :
حالا اگر ما نام فایل یا متغیر file_name$ را فیلتر کنیم چه اتفاقی می افتد ؟؟
معلومه!! پیلود دیگه اجرا نمیشه :
می بینید که پیلود اجرا نشد حالا اگر بخواهیم دلیلش را بررسی کنیم
باید سورس سایت را مشاهده کنیم:
خب می بینید که سایت کاملا نام فایل را فیلتر کرده
حالا به کد php این سایت نگاه میکنیم تا دقیق تر به بررسی پرداخته باشیم:
مثل اینکه سایت متغیر file_name$ را با تابع htmlentities فیلتر کرده است
این تابع کاراکتر هایی که ممکن است خطرناک باشد را فیلتر می کند
یعنی یک لیست سیاه از کاراکترهایی مانند < یا > را به کارکتر هایی دیگر مانند < و > تبدیل میکند
این بود از بحث نام فایل ها که توسعه دهندگان حتما باید این نکته را رعایت کنند
ممنون که این مقاله را خواندید
موفق و پیروز باشید