مقابله با دزدان css وب سایت


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

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

فرض می‌کنیم یک صفحه‌ای داریم به‌نام 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 می‌کنیم.

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

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

منبع : وبلاگ یک طراح وب  http://aliha.ir/2010/02/21/css-file-protection