Obfuscation چیست ؟

"Obfuscation" به معنای مبهم‌سازی یا پنهان‌سازی است. در زمینه‌های مختلف، این واژه ممکن است معانی مختلفی داشته باشد، در برنامه‌نویسی مبهم‌سازی کد یا کد ابفاسکیت..

انتشار: , زمان مطالعه: 4 دقیقه
Obfuscation یا مبهم‌سازی در برنامه نویسی چیست ؟
دسته بندی: امنیت سایبری تعداد بازدید: 275

Obfuscation چیست ؟

"Obfuscation" به معنای مبهم‌سازی یا پنهان‌سازی است. در زمینه‌های مختلف، این واژه ممکن است معانی مختلفی داشته باشد:

  1. در برنامه‌نویسی: مبهم‌سازی کد (کد ابفاسکیت) به این معنا است که کد منبع یک برنامه به گونه‌ای تغییر داده می‌شود که خواندن و فهمیدن آن برای انسان سخت و پیچیده شود، در حالی که عملکرد اصلی برنامه تغییر نکرده و همچنان به درستی کار می‌کند. هدف از این کار معمولاً محافظت از کد از بینش و تغییرات غیرمجاز است.

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

واژه "obfuscation" در فارسی می‌تواند با واژه‌های مانند "مبهم‌سازی"، "پنهان‌سازی" یا "گیج‌کننده‌سازی" ترجمه شود.

البته، استفاده از مبهم‌سازی در موقعیت‌های مختلف ممکن است مزایا و معایب خاص خود را داشته باشد:

در برنامه‌نویسی:

مزایا:

  • محافظت از مالکیت معنوی: با اینکه مبهم‌سازی یک راه قطعی برای جلوگیری از کپی‌برداری کد نیست، اما می‌تواند آن را برای کسانی که قصد دارند کد را بررسی یا تغییر دهند، سخت‌تر کند.
  • امنیت افزایش یافته: در بعضی موارد، مبهم‌سازی می‌تواند به کاهش خطرات امنیتی کمک کند، زیرا تشخیص نقاط ضعف در کد مبهم‌شده سخت‌تر است.

معایب:

  • مشکلات در عیب‌یابی: اگر مشکلی در کد پیش بیاید، تشخیص و رفع آن در یک کد مبهم‌شده ممکن است سخت‌تر باشد.
  • کاهش عملکرد: در بعضی موارد، کد مبهم‌شده ممکن است کندتر اجرا شود.

در داده‌ها و حریم خصوصی:

مزایا:

  • حفاظت از حریم خصوصی: مبهم‌سازی داده‌ها می‌تواند اطلاعات حساس را در برابر دسترسی‌های غیرمجاز محافظت کند.
  • رعایت مقررات: در بعضی صنایع، ممکن است قوانینی وجود داشته باشد که مبهم‌سازی داده‌ها را مقرر کند.

معایب:

  • پیچیدگی: مدیریت و استفاده از داده‌های مبهم‌شده ممکن است پیچیده و زمان‌بر باشد.
  • خطر از دست رفتن اطلاعات: اگر فرآیند مبهم‌سازی به درستی انجام نشود، اطلاعات ممکن است از دست برود یا غیرقابل استفاده شود.

در نهایت، در هر موقعیتی که قصد دارید از مبهم‌سازی استفاده کنید، باید مزایا و معایب آن را در نظر گرفت و بر اساس نیازها و اهداف خود تصمیم‌گیری کنید.

بیایید مثالی از مبهم‌سازی در برنامه‌نویسی بزنیم

مبهم‌سازی در برنامه‌نویسی:

فرض کنید کد زیر یک تابع ساده در زبان جاوا اسکریپت است که دو عدد را جمع می‌زند:

function addNumbers(a, b) {
    return a + b;
}

 پس از مبهم‌سازی، این کد ممکن است به شکل زیر درآید:

function _0x1de4(_0x590567, _0x2e4736) {
    var _0x587f03 = _0x587f();
    return _0x1de4 = function (_0x1de4ee, _0x5706c6) {
        _0x1de4ee = _0x1de4ee - 0x1a0;
        var _0x133c6e = _0x587f03[_0x1de4ee];
        return _0x133c6e;
    }, _0x1de4(_0x590567, _0x2e4736);
}

function _0x587f() {
    var _0x58970f = ['7899TAVblA', '7gBUQbl', '911712oEMcDb', '160540iAbyMf', '1188276skCrOY', '396776VMWQyl', '5ysnyGG', '10NeJrCK', 'JKVgN', '1209753BujMUA', '214491sPdfLS'];
    _0x587f = function () {
        return _0x58970f;
    };
    return _0x587f();
}

(function (_0x5bd963, _0x3ba78c) {
    var _0x1fdbab = _0x1de4, _0x47ceb0 = _0x5bd963();
    while (!![]) {
        try {
            var _0x2f73c8 = -parseInt(_0x1fdbab(0x1a9)) / 0x1 + parseInt(_0x1fdbab(0x1a3)) / 0x2 + -parseInt(_0x1fdbab(0x1a8)) / 0x3 + parseInt(_0x1fdbab(0x1a1)) / 0x4 * (parseInt(_0x1fdbab(0x1a4)) / 0x5) + -parseInt(_0x1fdbab(0x1a2)) / 0x6 * (-parseInt(_0x1fdbab(0x1aa)) / 0x7) + -parseInt(_0x1fdbab(0x1a0)) / 0x8 + -parseInt(_0x1fdbab(0x1a7)) / 0x9 * (parseInt(_0x1fdbab(0x1a5)) / 0xa);
            if (_0x2f73c8 === _0x3ba78c) break; else _0x47ceb0['push'](_0x47ceb0['shift']());
        } catch (_0x543dcb) {
            _0x47ceb0['push'](_0x47ceb0['shift']());
        }
    }
}(_0x587f, 0x1a8f8));

function a1(_0x4b2340, _0x244bd2) {
    var _0x584a4b = _0x1de4, _0x202e2e = {
        'JKVgN': function (_0x29f13f, _0x30bdda) {
            return _0x29f13f + _0x30bdda;
        }
    };
    return _0x202e2e[_0x584a4b(0x1a6)](_0x4b2340, _0x244bd2);
}

 در اینجا، نام تابع و نام پارامترها تغییر کرده و به حروف و اعداد نام‌گذاری شده‌اند که کمتر معنایی دارند.


دیدگاه های مربوط به این مقاله (برای ارسال دیدگاه در سایت حتما باید عضو باشید و پروفایل کاربری شما تکمیل شده باشد)