بیایید کمی سربه‌سر دزدهای پوسته بگذاریم – یک کُد کوچولو!

ساعت‌ها وقت می‌گذاریم برای نوشتن دستورات ِ سی‌اس‌اس ِ پوسته‌مان. مسلماً دوست نداریم یک نفر بیاید در عرض چند ثانیه کدهای‌مان را کش برود. حالا ما می‌خواهیم یک کاری بکنیم که وقتی آقای دزد، پرونده‌ی سی‌اس‌اس را در مرورگرش باز کرد، به‌جای کدها، مثلاً یک شکلک عین بُز لبخند بزند برایش :)

برای این‌کار از پی‌اچ‌پی و اچ‌تی‌اکسس استفاده می‌کنیم.

فرض می‌کنیم یک صفحه‌ای داریم به‌نام index.php؛ کدهای اچ‌تی‌ام‌ال زیر را هم در آن داریم:

<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
سلام جهان!
</body>
</html>

حالا کد پی‌اچ‌پی زیر را به بالای index.php اضافه می‌کنیم، یعنی قبل از شروع شدن <html> باید قرار بگیرد:

<?php
session_start();
$_SESSION["csskey"] = "user";
?>

با این‌کار برای کاربر در هنگام ورود یک سشن با نام csskey که برابر با user است، ست کردیم.

سپس یک فایل با نام style.php می سازیم و تکه‌کد پی‌اچ‌پی زیر را در ابتدای آن قرار می‌دهیم و بعد از آن، دستورات سی‌اس‌اس‌مان را اضافه می‌کنیم:

<?php
session_start();
header("Content-type: text/css");
if ($_SESSION["csskey"] != "user") {die(":-)");}

$_SESSION["csskey"] = "somethingelse";
?>

body {background-color: #000; color: #fff; direction: rtl;}

فکر کنم متوجه شده باشید که چه اتفاقی قرار است بی‌اُفتد. Content-type را از نوع text/css می‌گذاریم تا مرورگر آن را به‌عنوان یک فایل سی‌اس‌اس تفسیر کند.
سپس می‌گوییم اگر csskey برابر با user نبود، دستورات سی‌اس‌اس را بارگذاری نکن و در خروجی «:-)» را چاپ کن.
اما اگر csskey برابر با user بود، آن‌وقت دوباره csskey را برابر با somethingelse می‌کنیم و در خروجی دستورات سی‌اس‌اس را برمی‌گردانیم.

و در آخر فقط کافی است دو خط زیر را به فایل .htaccess اضافه کنیم:

RewriteEngine on
RewriteRule style.css style.php

درواقع ما عملاً هیچ فایلی به‌نام style.css نداریم و با کمک اچ‌تی‌اکسس style.php را تبدیل به style.css می‌کنیم.

شاید تنها ایرادی که این روش داشته باشد این است که برای هربار بارگذاری شدن سایت، باید تعدادی دستور پی‌اچ‌پی اجرا و کامپایل شود و این برای سایت‌هایی که بازدید بالا دارند اصلاً خوب نیست چرا که فشار زیادی به سرور وارد می‌شود و مورد دیگر اینکه حتی با استفاده از این روش نیز دستورات سی‌اس‌اس‌مان همچنان با فایرباگ قابل روئیت می‌باشند!

این روش را ایشان ارائه کرده‌اند.

دیدگاه‌ها (۵۶)

  • جالب بود; یه ترفند کوچک اما زیرکانه ..

    پاسخ

  • روش جالبی بود …

    پاسخ

  • سلام
    ترفند جالبی بود اما یه ایراد کوچولو داره !
    کاربر وقتی یه بار وارد صفحه ی اصلی بشه و براش سشن ساخته بشه ، بعدش بره به صفحه ی سی اس اس چون سشن ایجاد شده می تونه کد ها رو ببینه به گمونم .
    البته تست نکردم به لحاظ منطقی می گم .
    در هر صورت ممنون پست خوبی بود

    پاسخ

  • چه کاریه!
    خوب با اضافه کردن چند تا خط اضافه به htaccess از استفاده مستقیم از فایلها جلوگیری میکنیم (Leech protect) دردسر اضافی هم نخواهیم داشت :D

    پاسخ

  • خیلی باحال بود ! مرسی ! همه از فایرباگ استفاده نمی کنن ! اونایی هم که می تونن خوب قدرتش رو دارن ! نوشه جونشون ! :D

    پاسخ

  • @مرتضا
    نه مرتضی من تست کردم و این طور نبود.

    @جاوید
    آره این راه هم خوبه البته فکر می‌کنم اگه صفحه رو از داخل مرورگر سیو کنیم، فایل سی‌اس‌اس هم دانلود بشه باهاش.

    پاسخ

  • یه مشکلی ! من نمی تونم فایل .htaccess رو ویرایش کنم ! ):

    پاسخ

  • راه حل جالبی بود.
    ولی متاسفانه آقای دزد همیشه کلید داره…

    پاسخ

  • @مجید
    احتمالا به‌خاطر پرمیشنش هست..

    پاسخ

  • اگر به جای اون دستور اچ تی اکسس آدرس خود فایل پی اچ پی رو بدیم مشگلی پیش میاد ؟

    پاسخ

  • جالب بود :-D

    پاسخ

  • @SHahab
    با تگ لینک، فایل پی‌اچ‌پی به صفحه لینک نمی‌شه. والبته حتما باید پسوند پی‌اچ‌پی به سی‌اس‌اس تبدیل بشه تا مرورگر بتونه دستورای سی‌اس‌اس داخلش رو رندر کنه.

    پاسخ

  • من که سر در نمیارم از اینا ولی واقعاً حق‌تون نیست با این همه زحمتی که واسه یه طرح میکشید بعد یکی دیگه راحت کپی کنتدش. ایشالا نیازی به این کارها نباشه و اونا قدر زحمت طراحان اصلی رو بدونن

    پاسخ

  • فکر کنم این کار بیشتر از همه برا من مفید باشه ولی دستت درد نکنه اون فایرباگش رو حذف کن که حالا حالا دنبالش باشن :دی

    پاسخ

  • مرسی علیها ، مثل همیشه عالی
    گل کاشتی داداش :)

    پاسخ

  • you are best!

    پاسخ

  • بیچاره دزدا خب

    پاسخ

  • ببینم با فایر باگ مثلاً نمی‌شه کد رو دید؟
    الآن روی همین وبلاگ امتحان کردم می‌شد دید ولی فکر نمی‌کنم جلوی این کار رو بشه گرفت کلاً.

    پاسخ

  • @یاسر
    همونطور که گفتم با فایرباگ می‌شه دید.
    ضمنا من برای پوسته‌ی وبلاگ خودم از این روش استفاده نکردم.

    پاسخ

  • یه سوال: این کدها را چطوری میشه رنگی کرد؟
    پلاگینی چیزی هست که کدها رو رنگی نشون میده؟ ممنون میشم جواب بدی.

    پاسخ

  • سلام ممنون از مطلب خوبت…

    پاسخ

  • @عÙ�Û�Ù�ا – من نخونده بودم اون آخرش رو.
    ولی کلاً فکر نکنم روشی برای حفظ کردن کد سی‌اس‌اس باشه که جواب بده.

    پاسخ

  • سلام
    واقعان پست مفیدی بود.
    به امید روزی که فعالان در زمینه طراحی به کار بقیه طراحان احترام بگذارند .
    موفق و سربلند باشید

    پاسخ

  • سلام !

    آره مشکل پرمیشن بود ! مرسی ! :)

    پاسخ

  • مرسی
    با امکان جدید یوتیوب (تبدیل صحبتهای ویدیوها به زیرنویس) به روزم.

    پاسخ

  • جالب بود دنبال دقیقا راه حل هایی این طوری می گشتم ولی متاسفانه هیچ راه کاملی وجود نداره ، البته کد کردن کل فابل ها به طریق اسکی هست که خیلی وقت گیره ولی خوب مطلب جالب بود ممنون

    پاسخ

  • آقا این که بده , شما می تونید از شرط و REMOTE_REFERER این کار رو بکنی ((:

    پاسخ

  • من فک نمی کنم به این کار بگن دزدی چون اگه این طور بود مرورگرها طوری ساخته می شدن که خاصیت open source نداشته باشن،پس دزدی نیست.

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

    پاسخ

  • @samuel
    چرا این دقیقا دزدی و در مرحله‌ی بعدی کپی کردن بدون اجازه محسوب می‌شه. اون خاصیت هم که می‌گید اسمش اوپن‌سورس نیست. خروجی‌ای از رندر شدن صفحه توسط مرورگر هست که به شما هم نشونش می‌ده.
    ضمنا این‌چیزها هیچ ارتباطی به هک شدن و اینا ندارن. اون اصلا یه بحث دیگه‌ای هست رفیق!

    پاسخ

  • دمت گرم خیلی باهال بود.
    کارت درسته.
    قیافیه دزده دیدنیه وقتی مثل بز داری بهش می خندی.

    پاسخ

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

    پاسخ

  • @سعید برهانی
    خواهش می‌کنم. نمی‌دونستم این مورد رو، ممنون که توضیح دادین ;)

    پاسخ

  • سلام خسته نباشین می خواستم بدونم که چطوری باید یک فایل css رو آپلود کرد ممنونم اگه میشه توی یکی از نظرات وبلاگ جواب بدین ممنونم

    پاسخ

  • چرا صفحه رو چپکی کردید؟

    پاسخ

  • سلام دوست من عیدتون مبارک باشه
    میبینم که اینجا را هنوز نیوتون کشف نکرده
    ازتون یه درخواست داشتم اگه ممکن منو راهنمایی کنید
    من وقتی با فایرفاکس یا گوگل کروم وبلاگم رو نگاه می کنم همه چیز مرتبه
    اما وقتی با اکسپلور وارد می شم می بینم که چندتا از پستهای قبل رو نشون نمی ده یا یکی از پستها رو درهم ادغام کرده
    قالب هم عوض کردم جواب نداد
    می گن مربوط به سورس برنامه است!
    ممنون میشم اگه راهنمایی بفرمایید
    با تشکر

    پاسخ

  • بسیار عالی اما این روش خیلی پیش پا افتادست اصلا پیشنهاد نمی کنم

    پاسخ

  • میشه یه دمو ازش بزارین ؟
    فکر نکنم عملی باشه

    پاسخ

  • @HaDi
    خودتون تست بکنید اول، اگر مشکلی بود اونوقت مطرح کنید!

    پاسخ

  • حیف اینهمه وقت و انرژی که آدم بخاطر بخل صرف ترفندهای غیراصولی و کثیف کردن کد و کاهش دادن معیارهای برنامهء ایدئال بکنه.
    درسته کپی کردن کار دیگران گاهی مشکل اخلاقی داره (نه همیشه)، اما بچه گانه هست که بخوایم اینقدر وقت صرف این چیزها بکنیم. بهتره وقت و انرژی خودمون رو صرف یاد گرفتن چیزهای نو و افزایش توانایی های خودمون بکنیم و از منابع رایگان دنیا مثل دانش لذت ببریم. بشینید دوتا مقالهء ویکیپدیا رو بخونید و حال کنید!
    بالاخره چیزهای زیادی در دنیا مجانیه که همهء ما بدون اونها هیچ جای پیشرفتی نداشتیم و نمیتونستیم از زندگی چندان لذتی ببریم. بذارید حالا دو نفر هم کار شما رو کپی کنن. حالا یوقت هست مسئله جور دیگس (مثل رقابت تجاری) خب فرق میکنه.

    پاسخ

    هرجند که دوست محترم”علیها” توضیح داده اند، اما اگر شما نیز روز ها و ماه ها برای ساخت یک پوسته و… برای سایت خود صرف می کردید، آنگاه متوجه می شدید که این مدت زمانی را که فردی برای حفاظت از آنها صرف کرده است بسیار باارزش است و بایستی از چنین دوستی تشکر نمود.

    پاسخ

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

    پاسخ

  • روش جالبی بود! واسه سایت‌های کوچیک خوبه

    پاسخ

  • هر کسی که کد رو ویرایش میکنه پس از دیدن این مورد میره نقطه کلیدی رو پیدا میکنه اونم پاک میکنه

    خلاصه چون سورس باز هست نمیشه زیاد روش با این کدها اعتماد کرد

    مرسی

    پاسخ

  • من سایت شما را لینک کردم حالا شما هم لطفا مرا لینک کنید ممنون !میشه منو خبر کنید

    پاسخ

  • سلام ممنون بابت مطالب مفید و جالبی که نوشتید. من تازه با این سایت آشنا شدم و الان دارم مطالب رو میخونم. خیلی مفید هست. موفق باشید.

    پاسخ

  • عیول روش خوبیه ! خیلی حال کردم با روشت ! میشه از این دزد گیر ها زیاد بنویسی ؟ مثلا دزدگیر کش رفتن مطالب ؟

    پاسخ

  • سلام
    مرسی جالب بودش
    حداقل اینجوری میشه حال آقای دزد رو گرفت ولی هر قفلی یک کلیدی داره
    پیروز باشید

    پاسخ

  • با تشکر از شما

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

    و این نشون میده که راههایی برای حفظ قالب از سارق وجود داره

    ولی خوب روی هم رفته این ایده هم جالبه

    پاسخ

  • روش جالبیه …
    اما خودمون هم می دونیم ، اگر بخوایم CSS رو کپی کنیم ، به راحتی میشه کپی کرد.

    // حداقل خود مرورگر یکبار دانلودش کرده …

    پاسخ

  • سلام
    آقا من یک سوال دارم اگر ما session رو set کنیم کد کار می کنه و اگر نه کد کار نمی کنه و die به کار میاد
    اما مشکل اینجا هست که اگر سشن وجود داشته باشه خوب کد ها با یک view source ساده قابل مشاهده هستش
    من رو localhost امتحان کردم

    حالا راه حل چی هست؟

    با تشکر

    پاسخ

  • ببخشید
    حرفمو کامل می کنم

    اگر سشن فعال نباشه شاید اون فایل php که پسوند css دادیم باز بشه و محتوایی رو نمایش نده اما مشکل اینجاست که در این روش عملا جلوی نوشته شدن دستورات زیر die رو می گیریم و کل style از بین میره و کلا فایل از کار میفته و اگه فعال هم باشه که میشه همون فایل css

    حالا اگر من اشتباه می کنم لطفا راهنمایی کنید

    ممنون

    پاسخ

  • کاش طراحی سایت موبایل هم یکی میزاشت – اگه میشه یه توضیحی بدین یا اینکه بگید با چه کدهایی نوشته میشه؟

    پاسخ

  • من که از این سر در نیاوردم.

    پاسخ

بازتاب‌ها (2)

دیدگاه خود را ارسال کنید


می‌توانید از برخی کدهای HTML استفاده نمایید:


<a> <b> <blockquote> <i> <em> <pre> <code> <strong>