آموزش های جامع فلش ( فلاش ) و فروشگاه محصولاتalphapack

آموزش مختلف موضوعات فلش ( فلاش ) و جوک و طنز و زمینه های مختلف کامپیوتری

آموزش های جامع فلش ( فلاش ) و فروشگاه محصولاتalphapack

آموزش مختلف موضوعات فلش ( فلاش ) و جوک و طنز و زمینه های مختلف کامپیوتری

خدا شانس بده

واقعا بعضی از مردم چقدر خوش‌شانس‌ هستند. کبوتر خوشبختی صاف میاد مینشینه روی شانه آنها. برعکس٬ بعضی از افراد هم خیلی بدشانس هستند و کبوتر خوشبختی صاف فضولات میریزه روی سرآنها.


چند سال پیش که تازه آمده بودم کانادا با یک جوان آس و پاس ایرانی بصورت اتفاقی آشنا شدم که کنار خیابان هات داگ میفروخت. میگفت ساعتی شش دلار میگیره. خیلی دلم برایش سوخت. شماره‌اش را گرفتم که اگر کار مناسبی برایش پیدا کردم خبرش کنم. آدم زحمتکش و ساده‌ای بنظر میرسید.
گذشت و گذشت و هیچ ارتباطی بین ما نبود تا اینکه امروز سر چهار راه موقعی که منتظر سبز شدن چراغ بودم دیدم راننده یک ماشین هومر برایم دست تکان میدهد. هرچه دقت کردم راننده را نشناختم. مرا به اسم صدا کرد. جلو رفتم ولی قیافه‌اش آشنا نبود. تعجب کرده بودم. فکر میکردم اشتباهی گرفته. وقتی خودش را معرفی کرد و گفت همون جوان آس و پاس هات داگ فروش است از تعجب خشکم زد. چه شیک شده بود. باورم نمیشد اینهمه تغییر.
باهم رفتیم قهوه‌ای خوردیم و از او پرسیدم: لاتاری٬ چیزی برنده شدی؟
کلی خندید و جریان پولدار شدنش را تعریف کرد.
ظاهرا یکروز صبح خیلی زود این بدبخت بینوا برای انجام یک کار بانکی وارد محلی میشود که یکی از آن دستگاههای بقول خودمان «عابر بانک» نصب شده بوده و همینکه کارت بانکی اش را وارد دستگاه میکند یک جوان سیاه پوست لوله اسلحه کمری‌اش را پشت سرش میگذارد و میخواهد مبلغی را از حساب بانکی بیرون کشیده و به او بدهد. این بیچاره فلک زده هم هرچه قسم میخورد که حساب بانکی اش خالی خالی است و فقط میخواسته موجودی اندکش را چک کند٬ مورد قبول جوان سیاه‌پوست نمیشود. در همین موقع یکنفر دیگر وارد آنجا میشود که قبل از اینکه موفق به فرار شود٬ جوان سیاه‌ پوست سعی میکند او را هم گیر بیاورد و حسابش را خالی کند. ظاهرا بین آن دو درگیری و کشمکش میشود و جوان سیاه پوست هول میشود و شروع به شلیک کردن میکند و بلافاصله پا به فرار میگذارد. هیجکدام از گلوله ها مستقیما به کسی اصابت نکرد مگر یکی از آنها که در اثر کمانه کردن به دیوار سنگی آنجا صاف میخورد به باسن این دوست ایرانی ما.
خلاصه بیچاره را با آمبولانس به بیمارستان میبرند و در آنجا بستری میکنند. فردای آنروز رئیس بانک مربوطه به عیادتش می‌آید و یک چک یک میلیون دلاری به او میدهد و از او میخواهد موضوع را پیگیری نکند و لطمه‌ای به اعتبار آن بانک نزند.

حالا متوجه شدید وقتی میگم خدا شانس بده٬ یعنی چی؟
ما حتی از مغزمان هم نمیتوانیم پول دربیاوریم درحالیکه باسن بعضی‌ها برایشان پول می‌آورد. خدا٬ شانس بدهد.
حالا از فردا نروید جلو بانکها خم شوید به امید اینکه گلوله‌ای به ماتحت‌تان بخورد و پولدار شوید!

روش هایی جهت افزایش ضریب امنیت در طراحی صفخات وب

مطمئناً اگر شما هم جزو یکی از کاربران متوسط اینترنت باشید حتماً کلمات sql injection به گوشتان خورده که به معنی تزریق کد های اس کیو ال وارد شدن بدون پسورد است .

فرض کنید شما برای گرفتن اطلاعات از پایگاه چنین کدی نوشته باشید:


select id,name from users

where name = '{0}' And pass = '{1}';


و اطلاعات را بدون هیچ کد اضافه ایی به صورت زیر در پایگاه ذخیره کرده باشید:


id     name       pass
1   | myname | 123456
2   | mynmae2| 1234
.
شما مقادیر {0}و{1}را مستقیم از یک تکست باکس دریافت و در کامند اس کیو ال جایگذاری می کنید حالا اگر کاربر یک نیم کت ' اضافه تایپ کند می تواند دستورات خود را بدون هیچ واسطه ایی رو دیتا بیس شما اعمال کند به صورت زیر

فرض کنید:


{0}=myname // user name can any thing
{1}=any' or 'a'='a  //sql injection code
حالا این مقادیر را در کامند بالا جای گذاری می کنیم تا ببینیم شکل دستورات به چه صورتی می شود
select id,name from users
where name = 'myname' And pass = 'any' or 'a'='a';

می بینیم که یک کامند ایجاد شد که عبارت
or 'a'='a'
همیشه درست است و دستور سلکت آیدی و نام تمام کاربران را بر می گرداند.

خوب این یک مثال ساده  بود.
حالا فرض کنید کاربر مورد نظر به طریقی می تواند اطلاعات بانک اطلاعاتی را روئیت کند خیلی ساده اطلاعات لازم برای ورود کاربران در اختیارش قرار می گیرد (برای نمونه ممکن است بک آپ بانک اطلاعاتی را به نحوی دانلود و مشاهده کند)
 حالا بخش  امنیت اطلاعات  و مقابله با این نوع کد ها و جلوگیری از حدس کلمه عبور
برای مقابله با این نوع حملات در php از تابع mysql_prep استفاده می شود که کارهای زیر را انجام می دهد
The code does the following:
1.Removes whitespace at the beginning and end of the string.
2.Replaces backslashes (\) with double backslash (\\).
3.Replaces single quotes (') with backslashed single quote (\').
4.Replaces percent signs (%) with backslashed percent signs (\%) to prevent wildcard errors with MySQL.
5.Removes all charactors that are not alpha-numeric, whitespace, or special charactors.

خوب این مرحله اول برای جلوگیری از حملات sql injection
مر حله دوم رمز گذاری پسورد است تا کسانی که به نحوی به پایگاه داده دسترسی دارند به طور مستقیم به پسورد دسترسی پیدا نکنند.
در مرحله رمز گذاری در php از توابعی شبیه md5 - sha1 -crc32 - hash استفاده می شود اما نکته اینجاست که این سرعت این توابع بسیار بالاست برای اینکه از کرک شدن پسورد رمز گذاری شده جلوگیری شود.
یک رشته به طول دلخواه به صورت راندم ایجاد می شود و مستقیم در پایگاه داده ذخیره می شود که به آن salt  گفته می شود و بعد این رشته هش یا رمزگذاری شده رشته پسورد از کاربر دریافت می شود و کل رشته جدید دوباره هش می شود.

می بینیم که رشته حاصل به هیچ وجه قابل کرک شدن نیست و باید حتما شخص رشته salt را بدست بیاورد تا امکان کرک کردن پسورد را پیدا کند.
شکل جدید پایگاه :
id      name       pass                                                  salt

1   | myname | 3769b1c4ba2fdb20d5ebe9849f3c48b4 | iPlodf
.
حالا وقتی کاربر بخواهد به حساب کاربری خود وارد شود ما بر اساس نام کاربری اطلاعات salt را که در هنگام ثبت نام به صورت تصادفی از کاربر گرفته بودیم را از پایگاه می خوانیم  و دوباره آنها را هش می کنیم و مقدار حاصل را دوباره مقدار هش شده قبلی مقایسه می کنیم اگر مطابقت کرد و تعداد سطر های دریافت شده از پایگاه دقیقاً برابر 1 بود
صحت کاربر تایید می شود .
مثال  اطلاعات زیر از کاربر در یافت می شود:
$name = myname;
$pass = 123456;
$salt = randomstr(6);// iPlodf
$hashed_pass = md5(md5($salt).md5($pass));//this password & name & salt save to db :=3769b1c4ba2fdb20d5ebe9849f3c48b4

  حال برای احراز هویت
select salt from users
where name = '{0}';//=$salt
 
و دوباره عمل هش نمودن پسوورد با پسوردی که الان کاربر در تکست باکس وارد کرده
و در آخر مقایسه :
select id,name from users
where name = '{$name}' and pass = '{$hashed_pass}'
.
.
.
if (mysql_num_rows($result_set) == 1) {
                // username/password authenticated
                // and only 1 match