خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

نحوه جلوگیری از اسکریپت بین سایتی در Node.js

مهاجمان ممکن است داده های حساس را از وب سایت شما بدزدند. یاد بگیرید چگونه از وب سایت خود در برابر حملات XSS محافظت کنید.

برنامه نویسی متقابل سایت (XSS) نوعی سوء استفاده امنیتی است که به مهاجمان اجازه می دهد تا با استفاده از کد مشتری، اسکریپت های مخرب را در وب سایت ها تزریق کنند. این یک تهدید مهم است زیرا مهاجمان می توانند از آن برای جعل هویت کاربران، دسترسی به داده های حساس یا حتی تغییر محتوای صفحه وب سایت استفاده کنند.

این به قدری خطرناک است که در سال 2021، رتبه دوم را در فهرست نقاط ضعف رایج در 25 نقطه ضعف خطرناک ترین رتبه اول قرار داد. این بدان معناست که اگر در حال ایجاد وب سایت هستید، باید در مورد اسکریپت بین سایتی و نحوه جلوگیری از آن بدانید.

اسکریپت بین سایتی چگونه کار می کند؟

قبل از درک نحوه عملکرد اسکریپت نویسی متقابل سایت، مهم است که بدانیم خط مشی همان منبع (SOP) به چه معناست. SOP یک سیاست مکانیزم امنیتی است که یک وب سایت (یک مبدا) را از خواندن یا نوشتن به وب سایت دیگر (منشا متفاوت) محدود می کند. از ارسال کدهای مخرب به وب سایت های مورد اعتماد توسط وب سایت های مخرب جلوگیری می کند.

حملات اسکریپت نویسی بین سایتی سعی می کنند با سوء استفاده از ناتوانی مرورگر در تمایز بین HTML قانونی و کد مخرب، این خط مشی را دور بزنند. به عنوان مثال، یک مهاجم می تواند کد جاوا اسکریپت را به وب سایت مورد نظر تزریق کند. فرض کنید مرورگر کد را اجرا می کند و مهاجم به نشانه های جلسه، کوکی ها و سایر داده های حساس دسترسی پیدا می کند.

مطلب مرتبط:   راهنمای ماژول رمزنگاری Node.js

سه نوع اسکریپت بین سایتی وجود دارد که هکرها از آنها برای شکستن وب سایت ها استفاده می کنند: بازتابیده، ذخیره شده و DOM XSS.

نحوه جلوگیری از اسکریپت بین سایتی در Node

در زیر برخی از مراحلی است که می توانید برای جلوگیری از اسکریپت های متقابل سایت در Node انجام دهید.

ورودی را ضد عفونی کنید

مهاجمان برای انجام یک حمله XSS باید بتوانند داده ها را به برنامه وب شما ارسال کرده و به کاربر نمایش دهند. بنابراین، اولین اقدام پیشگیرانه ای که باید انجام دهید، ضدعفونی کردن تمام ورودی هایی است که برنامه شما از کاربران دریافت می کند. این بسیار مهم است زیرا داده های جعلی را قبل از اجرای سرور شناسایی می کند. می توانید این کار را به صورت دستی انجام دهید یا از ابزاری مانند اعتبار سنجی استفاده کنید که روند را سریعتر می کند.

برای مثال، می‌توانید از اعتبارسنجی برای فرار از برچسب‌های HTML در ورودی کاربر مانند زیر استفاده کنید.

import validator from "validator";
let userInput = `Jane <script onload="alert('XSS hack');"></script>`;
let sanitizedInput = validator.escape(userInput);

اگر بخواهید کد بالا را اجرا کنید، خروجی پاکسازی شده این خواهد بود.

Jane &lt;script onload=&quot;alert(&#x27;XSS hack&#x27;);&quot;&gt;&lt;&#x2F;script&gt;

محدود کردن ورودی کاربر

نوع ورودی را که کاربر می‌تواند در فرم شما ارسال کند از طریق اعتبارسنجی محدود کنید. به عنوان مثال، اگر یک فیلد ورودی برای ایمیل دارید، فقط اجازه ورود با فرمت ایمیل را بدهید. به این ترتیب، احتمال ارسال اطلاعات بد توسط مهاجمان را به حداقل می‌رسانید. برای این کار می توانید از بسته اعتبارسنجی نیز استفاده کنید.

مطلب مرتبط:   چرا Go جایگاهی را در فهرست 10 زبان برنامه نویسی برتر TIOBE به دست آورده است

سیاست کوکی فقط HTTP را اجرا کنید

کوکی ها داده ها را در یک کش محلی ذخیره می کنند و از طریق HTTP به سرور ارسال می کنند. اما مهاجمان همچنین می توانند از جاوا اسکریپت برای دسترسی به آنها از طریق مرورگر استفاده کنند، بنابراین آنها اهداف آسانی هستند.

کوکی فقط HTTP خط‌مشی است که از دسترسی اسکریپت‌های سمت سرویس گیرنده به داده‌های کوکی جلوگیری می‌کند. این بدان معناست که حتی اگر برنامه شما دارای آسیب‌پذیری باشد و مهاجم از آن سوء استفاده کند، نمی‌تواند به کوکی دسترسی پیدا کند.

در اینجا مثالی از نحوه اجرای سیاست کوکی فقط HTTP در Node.js با استفاده از Express آورده شده است:

app.use(express.session({
    secret: "secret",
    cookie: {
        httpOnly: true,
        secure: true
    }
}))

اگر مهاجم سعی کند به کوکی دسترسی پیدا کند و تگ httpOnly مطابق شکل بالا روی true تنظیم شده باشد، یک رشته خالی دریافت خواهد کرد.

اسکریپت بین سایتی یک هدف آسان برای هکرها است

در حالی که اطمینان از امنیت برنامه شما بسیار مهم است، اجرای آن می تواند پیچیده شود. در این پست با حملات اسکریپت بین سایتی و نحوه جلوگیری از آنها در Node آشنا شدید. از آنجایی که مهاجمان از آسیب پذیری های برنامه شما برای تزریق کد مخرب به سرور شما استفاده می کنند، همیشه اطمینان حاصل کنید که ورودی کاربر را پاکسازی می کنید. با انجام این کار، قبل از اینکه برنامه شما آن را ذخیره یا اجرا کند، کدهای مخرب را حذف می کنید.