الجمعة، 13 نوفمبر 2015

هل تعاني من قرصنة القوالب؟ اليك هذا الحل

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

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

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

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

var arrayName = ["host", "location", "http://ift.tt/1Y8HPoO;, "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://ift.tt/1lmQnuq  

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

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

$_GET['url'];

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

http://ift.tt/1EnOLSk

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

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://ift.tt/1lmQlCy

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

http://ift.tt/1Y8HRNr

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

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



from حسوب I/O - الأكثر شيوعاً http://ift.tt/1lmQnKE

ليست هناك تعليقات:

إرسال تعليق

دائماً، رأيكم يهمنا،