بعد ان تعرضت مجوعة من قوالبي الى القرصنة كان لا بد ان نبحث عن حل لهذه المشكلة.

سوف اعرض عليكم مجموعة من الحلول التي سوف تمنع اي شخص من الحصول على الكود الخاص بالقالب عن طريق (javascript & PHP)

لنبداء بحلول الجافاسكريبت:

1- اعادة تحويل اللص:

var arrayName = ["host", "location", "http://yaqutlab.com/thief/thief.php?url=", "href", "themes.yaqutlab.com"];

function checkURL(e) {
  var t = window[arrayName[1]][arrayName[0]];
  return e != t ? window[arrayName[1]] = arrayName[2] + window[arrayName[1]][arrayName[3]] : void 0
}

checkURL(arrayName[4]);

من خلال هذا الكود سوف نقوم بتحويل اللص الى صفحة من اختيارنا في حال لم يفتح القالب من خلال موقعنا قم بستبدال هذا الرابط:

http://yaqutlab.com/thief/thief.php?url=  

برابط الصفحة التي تريد ان تقوم بتحويل المستخدم لها. نحن نقوم بتحويل المستخدم الى صفحة php قبل تحويله الى صفحة العرض كي نقوم بتسجيل الرابط الذي جاء منه.

نستقبل الرابط عن طريق

$_GET['url'];

نقوم بتخذينه وبعدها تحويله الى هذه الصفحة

http://yaqutlab.com/thief/

وايضا قم بستبدال هذا الرابط:

themes.yaqutlab.com

برابط الموقع الخاص بك (الذي سوف تعرض القالب عليه)

هذه الطريقة من صنع @arabyami

2- منع المستخدم من حفظ القالب وعرض الـ (source code & inspect element)

تحتاج الى jquery

$(document).keydown(function(e){
    if( e.which === 73 && e.ctrlKey && e.shiftKey ){
        return false; // Ctrl+Shift+I
    } else if( e.which === 74 && e.ctrlKey && e.shiftKey ){
        return false; // Ctrl+Shift+J
    } else if( e.which === 85 && e.ctrlKey ){
        return false; // Ctrl+U
    } else if( e.which === 83 && e.ctrlKey ){
        return false; // Ctrl+S
    } else if( e.which === 123 ){
        return false; // F12
    }
});

وايضا سوف نمنعه من استعمال الزر الايمن للماوس:

$(document).bind('contextmenu', function(e) {
return false;
});

كانت هذه حلول الجافا سكريبت ولكنها لا تحل المشكلة بشكل جزري (قد يقوم اللص بإيقاف الجافاسكريبت في المتصفح)

والان جاء دور الـ PHP

لنبداء بالكود وبعدها الشرح:

<?php

session_start();

$token_name = 'Hussam3bd'; // Enter your token name

function SessionPut($name, $value) {
    return $_SESSION[$name] = $value;
}

function SessionExists($name){
    return (isset($_SESSION[$name])) ? true : false;
}

function SessionGet($name){
    return $_SESSION[$name];
}

function SessionDelete($name){
    if (SessionExists($name))
        unset($_SESSION[$name]);
}



function TokenGenerate() {
    global $token_name;
    return SessionPut( $token_name, md5(uniqid()) );
}

function TokenCheck($token){
    global $token_name;

    if (SessionExists($token_name) && $token === SessionGet($token_name)) {
        SessionDelete($token_name);
        return true;
    }

    return false;
}

?>

قم بحفظ هذا الكود في ملف php سوف احفظه باسم (init.php)

تعتمد هذه الطريقة على التحقق من Token المرسل للقالب عن طريق دالة TokenCheck اذا عادت لنا بـ true سوف نقوم باكمال تحميل الصفحة واذا عادة بـ false سوف نقوم باقاف القالب

الاستعمال:

سوف نقوم بعمل صفحة بها iframe يرسل قيمة الـ token الى صفحة index.php ولنفرض انها صفحة القالب

يتم توليد الـ token عن طريق دالة TokenGenerate

محتوى صفحة الـ iframe:

<?php require_once 'init.php'; ?>
<!DOCTYPE html>
<html lang="ar">
<head>
    <meta charset="UTF-8">
    <title>موقعي</title>
    <style type="text/css">
        body {
            margin: 0;
        }
        iframe {
            display: block;
            border: none;
            height: 100vh;
            width: 100vw;
        }
    </style>
</head>
<body>
    <iframe src="index.php?token=<?php echo TokenGenerate() ?>"></iframe>
</body>
</html>

لا تنسى استدعاء ملف init.php في كل صفحة تريد استعمال هذه الطريقة بها

<?php require_once 'init.php'; ?>

والان في صفحة index.php سوف نقوم بستقبال قيمة الـ token والتحقوق منها

<?php

    require_once 'init.php';

    // جلب محتوى الـ token
    $token = isset($_GET['token']) ? $_GET['token'] : null;

    // التحقق من token
    if (!TokenCheck($token)) {
        die('غير مصرح لك بالدخول'); exit(); // الامر الذي سوف ينفذ ان عادة الدالة ب false
    }

    // ن لم تعد الدالة ب false سوف يتم اكمال تحميل الصفحة واظهار القالب
?>

<!DOCTYPE html>
<html lang="ar">
<head>
    <meta charset="UTF-8">
    <title>حسام عبد</title>
</head>
<body dir="rtl" align="center" style="padding-top: 100px;color: red;">
    <h1 style="font-size: 6em;">اهلا بالعالم</h1>
</body>
</html>

في كل صفحة تريد التحقق من token قم باضافة الكود التالي:

<?php
    require_once 'init.php';
    $token = isset($_GET['token']) ? $_GET['token'] : null;
    if (!TokenCheck($token)) {
        die('غير مصرح لك بالدخول'); exit();
    }
?>

لمعاينة نتيجة الـ php:

http://themes.yaqutlab.com/result/iframe.php

حاول الدخول الى صفحة index.php بشكل مباشر :D

http://themes.yaqutlab.com/result/

وايضا حاول نسخ الرابط من iframe وقم بالدخول الصفحة (لن تعمل بالتاكيد)

هذه هي الطريقة التي وصلت لها ما رئيكم ؟ وهل هناك طريق اخرى؟