spyman

کاربران
  • تعداد ارسال ها

    260
  • تاریخ عضویت

  • آخرین بازدید

  • Days Won

    4

تمامی ارسال های spyman

  1. به طور کلی، تمامی وب ‏سرورها از روی قانون خاصی صفحات وب را نشان می‏دهند. برای آنکه صفحات وب تنها به یک پسوند منحصربه‏فرد نظیر .htm ختم نمی‏شوند و انواع‏و‏اقسام پسوند‏های مختلف، برای صفحات وب وجود دارد. حال فرض کنید که وب‏سرور شما، ابتدا فایل index.html را نشان می‏دهد و در صورت نبود آن، فایل‏های index.htm، index.php و ... شما می‏خواهید این روند را تغییر داده و فایل index.php را در اولویت قرار دهید. بدین منظور می‏بایست از دستور DirectoryIndex استفاده نمایید: DirectoryIndex index.php index.cgi index.pl default.htm کد بالا ابتدا به دنبال فایل index.php گشته و در صورت پیدا کردن آن، آن را به عنوان صفحه وب پیش‏فرض نمایش می‏دهد. اگر فایل index.php پیدا نشد، سرور به دنبال فایل بعدی که index.cgi می‏باشد گشته و همین روال، ادامه پیدا می‏کند. دقت داشته باشید که شما حتما مجبور به استفاده از index برای نام فایل نیستید و از هر اسم دیگری نیز، می‏توانید استفاده کنید.
  2. فرض کنید پوشه‏ای از تصاویر دارید و نمی‏خواهید که افراد غریبه، محتویان این پوشه را دیده و آن‏ها را تماشا کنند. برای این کار، سه راه وجود دارد: 1- ساخت یک صفحه index و قرار دادن آن در پوشه مورد نظر 2- استفاده از فایل .htaccess 3- استفاده از فایل*های HEADER و README از آنجا که بحث ما در مورد فایل .htaccess می‏باشد، راه دوم را مورد بررسی قرار می‏دهیم. برای این کار می‏بایست از فرمان IndexIgnore استفاده نمایید: IndexIgnore * این کد از لیست‏شدن تمامی فایل‏های پوشه مورد نظر، جلوگیری می‏کند. حال فرض کنید که درون پوشه‏ای انواع‏واقسام فایل‏ها نظیر فایل‏های اچ‏تی‏ام‏ال و تصاویر دارید و می‏خواهید که فقط از لیست شدن تصاویر جلوگیری شود. بدین‏منظور می‏توانید از کد زیر استفاده کنید: IndexIgnore *.gif *.jpg در واقع این کد از لیست‏شدن تمامی فایل‏هایی که به .gif و .jpg ختم می‏شوند، جلوگیری می‏کند. حال فرض کنید که سرور شما، به طور پیش‏فرض، از لیست‏شدن پوشه‏ها جلوگیری کرده است و شما می‏خواهید آن را تغییر دهید. برای این کار می‏توانید از دستور زیر استفاده کنید: Options +Indexes
  3. اگر از وب‏سرور آپاچی برای وب‏سایت خود استفاده می‏کنید، دیگر نیازی نیست برای هر مشکل جزئی و کوچک، به وب‏مستر هاستینگ‏تان تماس بگیرید. با یادگیری قابلیت‏های مهم فایل .htaccess، می‏توانید کنترل کامل وب‏سایت خود را برعهده بگیرید. در هنگام استفاده از فایل .htaccess، دانستن سه نکته از اهمیت به‏سزایی برخوردار است: نکته اول: فایل .htaccess را می‏بایست به صورت ASCII آپلود کرده و مجوز دسترسی به آن را بر روی 644 (یا rw-r--r--) تنظیم نمایید. نکته دوم: فایل .htaccess را می‏توانید به پوشه‏های مختلفی اعمال نمایید. به عنوان مثال اگر آن را بر روی root آپلود نمایید، تنظیمات آن به کل وب‏سایت اعمال خواهد شد و اگر آن را درون پوشه‏ای نظیر images/ آپلود نمایید، تنظیمات آن به پوشه images و زیرپوشه‏های آن اعمال خواهد شد. نکته سوم: هر htaccess را می‏بایست درون یک خط تایپ نمایید. یعنی در انتهای هر دستور، می‏بایست یک‏بار کلید Enter را فشار دهید.
  4. شاید درون فولدرتان فایلی نداشته باشید كه لود شود بنابراین لیست تمامی فایلهای فولدر شما نمایان میشود كه این اصولا از لحاظ امنیتی هم مناسب نیست و اگر یادتان باشد در مطلبی كه در مورد ساخت سایت در ویندوز 2003 دادم گزینه ای داشتیم برای اینكه این فایلها لیست نشوند همچنین در كنترل پنل هم چنین گزینه ای داریم اما خوب ان هم به صورت كلی در سایت ظاهر میشود . به هر حال میتوانید خط زیر را وارد كنید : Options -Indexes یا خط زیر را وارد كنید IndexIgnore * اما عكس این عمل نیز میتواند اتفاق بیفتد یعنی به صورت پیشفرض در سرور تنظیم شده است كه فایلها لیست نشودند اما شما میتوانید این گزینه را با خط زیر غیزفعال كنید : Options +Indexes اگر هم میخواهید فایلها لیست شوند اما گروه خاصی از انها مثلا عكس*ها لیست نشوند به صورت زیر عمل كنید : IndexIgnore *.gif *.jpg بعضی سرور*ها بعضی از فایلها را نمیشناسند با استفاده از این فایل میتوانید خط زیر را وارد كنید تا انها را بشناسد مثلا برای فایل*های فلش میتوانید دستور زیر را وارد كنید AddType application/x-shockwave-flash swf Addtype به فایل اعلان میكند كه باید نام فایلی جدید اعلان شود. میدانید كه هر فایلی كه از سرور سایت شما بارگذاری میشود در پهنای باند شما موثر است حال فرض كنید شما فایلی مثلا عكسی یا موسیقی برای دانلود در سایت گذاشته اید ! خوب بالطبع شما با استفاده از فرمول و محاسباتی كه در ذهن خود انجام داده اید و نسبت به تعداد كاربرانتان سنجیده اید كه با پهنای باندتان مطابقت داشته باشد اما كافیست سایت*های دیگری از فایل شما مثلا یك عكس شما استفاده كنند و عكس شما را در سایت خود قرار دهند و ادرس عكس ادرس همان عكسی باشد كه در سایت شما قرار دارد بنابراین از پهنای باند شما برای بار گذاری عكس استفاده میشود لذا انروزی كه پهنای باند شما از حد خود میگذرد شما باید هزینه كنید كه باز هم پهنای باند بخرید در صورتی كه میتوانید با استفاده از این فایل از انجام چنین كاری ممانعت كنید !منتهی قبلش باید توجه داشته باشید كه ایا هاست سرور شما از mod_rewrite پشتیبانی میكند یا خیر ؟! اگر نمیكند این گزینه برای شما فایده ای نخواهد داشت و نمیتوانید با این كار مبادرت ورزید . به فولدری كه ان فایل یا مجموعه عكس*های شما قرار دارد بروید و در فایل .htaccess ان دایركتوری خطوط زیر را اضافه كنید RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$ [NC] RewriteRule \.(gif|jpg)$ - [F] به جای mydomain.com نام دامنه خودتان را بنویسید مثلا parsx.com دستور فوق باعث میشود فایل*های با پسوند gif jpg نتوانند در سایت*های دیگر نمایش داده شوند اما شما میتوانید كار دیگری نیز بكنید مثلا بگذارید دیگران از عكس*های شما استفاده كنند و سپس طی یك حركت ناجوانمردانه فایل htaccess را گونه ای تعویض كنید كه تمامی عكس*ها و فایل*ها با عكس دیگری نمایش داده شوند مثلا عكسی بگذارید كه ادرس سایت خودتان را بگذارید . مثلا freeservers چنین كاری كرده است . اگر به عكس سایت*هایش لینك دهید نام سایت خودش نمایش داده میشود . RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$ [NC] RewriteRule \.(gif|jpg)$ http://www.mydomain.com/badimage.gif [R,L] به جای mydomain نام دامنه خودتان و ادرس عكس خودتان رابه جای ادرس فوق بگذارید .
  5. حتما میدانید كه راههای زیادی برای ریدایركت كردن فایلی خاص به فایل دیگر وجود دارد اما بهترین كار همین است كه میگویم در فایل خط زیر را وارد كنید : Redirect /OldDir/OldFile.html http://www.domainname.com/newdir بنابراین دستور به شرح زیر است Redirect oldlocation newlocation منتهی یادتان باشد كه newlocation باید نام ادرس كامل سایت باشد .
  6. اكثر میزبانهای وب فایلی كه وظیفه لود شدن در هنگام باز كردن دایركتوری خاصی را دارد با نام index قرار میدهند كه با استفاده از htaccess میتوانید انرا عوض كنید . خط زیر را به فایل اضافه كنید : DirectoryIndex filename.html حتما دیده اید كه اگر فایل index.html در دایركتوری نبود سرور فایل دیگری مثلا index.php را اجرا میكند روش به اینصورت است كه در دستور فوق بعد از filename.html با یك فضای خالی نام*های دیگر را وارد میكنید . بنابراین سرور در دایركتوری ویژه ابتدا به دنبال فایل اولی و سپس به دنبال فایل دومی و به همین ترتیب جستجو میكند . اگر هم هیچ یك از فایل*ها پیدا نشد پیغام خطای 404 ظاهر میشود .
  7. با این روش شما میتوانید بازه خاصی از آدرس IP یا IP خاصی از فرد خاصی را اضافه كنید تا ان فرد صاحب IP نتواند وارد صفحه خاص یا كل وبسایت شود . البته در كنترل پنل*ها اصولا این گزینه به صورت گرافیكی هست اما توجه كنید كه اگر در انجا به این كار اقدام كنید فرد مورد نظر از كل سایت محروم خواهد شد اما با استفاده از این عمل میتوانید IP خاصی را از صفحه خاصی محروم كنید . مثلا فرض كنید ادرس گوگل بت رو بگذاریم تا نتواند وارد صفحه خاصی شود . بنابراین خطوط زیر را اضافه كنید : Order allow,deny Deny from ipaddress Allow from all به جای ipaddress میتوانید ادرس ایپی را بنویسید مثل : 172.16.204.100 خط اول میگوید كه شما میخواهید چكار كنید و خط دوم میگوید كه ادرس مشخص شده را ممنوع كند . البته میدانید كه هر فرد با هر قطع ارتباط از اینترنت مخصوصا سرویس*های تلفنی بعد از هر بار اتصال ادرس ایپی انها عوض میشود یعنی 3 رقم اخر كه برای اینكه كل 256 ادرس را ممنوع كنید كافیست ارقام اخری را ننویسید . خط اخر هم به دیگران اجازه میدهد كه وارد سایت شوند . در ضمن شما میتوانید نام دامنه را نیز ممنوع كنید به این صورت كه به جای ادرس ای پی بنویسید : .parsx.com وقتی كاربر سعی در ورود به صقحه ویژه كه ممنوع شده است را دارد پیغام خطای 403 را میبیند . اگر میخواهید مثلا دایركتوری خاصی را از دسترسی همه ممنوع كنید اما اسكریپت*ها و دیگر اجزایی كه به فایل نیاز دارند بتوانند به ان دسترسی پیدا كنند كافیست خط deny from all را اضافه كنید .
  8. یك فایل بسیار ساده با محیط تكست . چگونه میتوان آنرا تولید كرد ؟ برای ساختن این فایل تنها كافیست یك محیط تكست ادیتور داشته باشید . مثل notepad این فایل در كجا هست ؟ این فایل در دایركتوری اصلی وبسایت شما قرار دارد و هر دایركتوری دیگری كه بخواهید . وظیفه این فایل چیست ؟ تقریبا تمامی محدودیت*های اعمالی بر آن دایركتوری را بر عهده دارد و میتواند پیغام*های خطا را مدیریت كند و چندین وظیفه دیگر كه اگر كمی در تنظیمات آن قصور و غفلت كنید شاید سایت شما بار گذاری نشود . تمامی*هاست*ها از این نوع گونه فایل حمایت میكنند ؟ این بستگی به میزبان شما دارد اصولا از این فایل حمایت میكنند . اما اگر هم میخواهید مطمئن شوید میتوانید از وبمستر سرور خود بپرسید . قبل از شروع كار حتما یك نسخه بك آپ از فایلی كه هم اكنون در دایركتوری شما قرار دارد بگیرید بعضی وبسرور*ها این فایل را دارند اما داخلش هیچی نیست كه دیگر نیازی به پشتیبان گیری نیست . قبل از شروع آموزش بگویم كه این آموزش مختص صاحبان وب سایت*ها هست و كاربرانی كه دارای سایت اختصاصی نیستند نمیتوانند استفاده چندانی از این مطلب بكنند اما خوب برای اطلاعات عمومی بد نیست به ادامه ان بپردازید . فكر كنم تقریبا 90% صاحبان وب این فایل را دیده باشند و بدون هیچ شكی در مورد ان از كنار ان گذشته باشند برای همین هم احتمال میدهم یكی از موضوعاتی كه در موردش كمتر مقاله ای پیدا میكنید همین مطلب باشد . به هر حال تصمیم گرفته ام كمی در مورد این فایل بظاهر بی ارزش صفر كیلوبایتی توضیحاتی بدهم . با استفاده از این فایل میتوانید پیغام*های خطایی كه ظاهر میشود را تغییر دهید یا اینكه صفحه را بدون استفاده از redirector كنترل پنل redirect كنید یا اینكه اجازه لیست گرفتن از دایركتوری خاصی از وبسایتتون رو محدود كنید . قبل از شروع كار مطمئن شوید كه ادیتور شما خاصیت word wrap را غیر فعال كرده است اگر نه خودتان آنرا غیرفعال كنید . فایل .htaccess در دایركتوری اصلی وبسایت شما یا سابدایركتوری شما قرار دارد دستوراتی كه در این فایل قرار میگیرد نه تنها دایركتوری جاری را تحت تاثیر خود قرار میدهد بلكه كلیه زیردایركتوری*های خود را نیز در بر میگیرد . بنابراین اگر از این فایل برروی دایركتوری اصلی خودتان استفاده كنید تمامی سایت را در برمیگیرد . در ضمن میتوانید این فایل را در هر دایركتوری كه خواستید نیز ایجاد كنید تا محدوده كنترل در دست خودتان باشد . اگر با CSS كار كرده باشید كار كردن با این فایل هم تقریبا مشابه همان است و برای افرادی كه با ان اشنایی دارند اسانتر است به هر حال هر فایلی كه در دایركتوری ویژه ای قرار دارد به نزدیكترین فایل htaccess خود مرتبط میشود و ان htaccess ان فایل را كنترل میكند . برای ساختن این فایل هیچ نیازی به نرم افزار یا سخت افزار ویژه ای ندارید تنها به یك notepad یا هر پردازنده متنی دیگری نیازمندید . برای ساختن این فایل كه نامی ندارد و فقط هشت حرف برای نوع فرمت ان در نظر گرفته شده است “.htaccess” وقتی میخواهید این فایل را در پردازنده متنی خود ذخیره كنید نام فایل به این صورت ذخیره میشود .htaccess.txt برای اینكه چنین اتفاقی نیفتد كافیست از منوی file گزینه save as… را انتخاب كنید در file type گزینه all files را انتخاب كنید و سپس در file name تایپ كنید “.htaccess” دات اچ تی اكسس را درون دو كوتیشن بگذارید اگر نتوانستید این كار را بكنید بعدا میتوانید از طریق كنترل پنل یا نرم افزار ftp خود نام فایل را عوض كنید . در مورد استفاده از نرم افزار*های ftp بگویم كه همانطور كه میدانید اینگونه نرم افزار*ها برای اسودگی اتصال به وبسرورتان میباشد كه فایل*ها را در سه نوع upload میكند كه سه گزینه Auto , binary, ASCII وقتی این فایل را با ftp اپلود میكنید یادتان باشد نرم افزار شما در حالت ASCII باشد . در ضمن یك مطلب دیگر هم در این مورد كه باید CHMOD كه مخفف Change MODe میباشد را برای این فایل عوض كنید پرمیشن این فایل باید 644 باشد یا RW-R—R— كه این عمل هم برای افزایش امنیت میباشد كه خوشبختانه همگی اشنایی با ان را دارید اما شاید بعدا بیشتر در مورد permission*ها توضیح دادم . این فایل به شما اجازه میدهد كه شما كاربران و ویزیتور*های خودتان را از صفحه ای به صفحه دیگر منتقل كنید حتما شده است كه بخواهید این كاررا انجام دهید مثلا در مورد خود من شما از parsx.com به weblog.parsx.com میروید البته من از این روش استفاده نكرده ام اما دلایل دیگری نیز میتواند عامل شود كه شما از این ریدایركت استفاده كنید شاید كاربر شما اشتباها ادرس صفحه ای از وبسایت شما را وارد كند یا اینكه شاید لینكی در وبسایت شما بنا به دلیلی شكسته شده باشد و از بین رفته باشد و ان صفحه پاك شده باشد به جای اینكه كاربر شما هیچ چیزی نبیند میتوانید انرا به صفحه اصلی سایت بسته به سلیقه خودتان منتقلش كنید . برای مثال فرض كنید كاربری با یك پیغام خطا مواجه شد برای آنكه او را به صفحه دیگری منتقل كنید باید به این صورت در فایل بنویسید : ErrorDocument errornumber /filename.html به جای errornumber شماره خطا را مینویسید اصولا خطای 404 زیاد اتفاق میفتد بنابراین میتوانید شماره 404 را بنویسید . اگر خواستید تمامی پیغام خطاها را به فولدر خاصی ببرید به اینصورت عمل كنید : ErrorDocument 404 /errorpages/notfound.html در مورد شماره پیغام خطاها هم كمی بگویم : 400این پیغام اصولا زمانی ظاهر میشود كه كاربر ادرس اشتباهی رفته باشد. 401وقتی كاربر به دایركتوری و یا جایی میرود كه اجازه ورود به انرا ندارد. 403وقتی فایل طوری تنظیم شده است كه كاربر اجازه دسترسی به ان را ندارد. 404 not found. 500internal server error اشكال عموما از اسكریپت*های داخلیست . باز هم پیغام خطا داریم كه زیاد به درد نمیخورد . كاربرد دیگر این فایل استفاده از رمز عبور است كه البته پیكر بندی ان كمی سخت تر از تنظیمات پیام*های خطاست . ابتدا فایلی به این نام ایجاد كنید .htpasswd این فایل هم خصوصیاتی چون فایل .htaccess دارد این فایل حاوی نام*های كاربری و كلمه*های عبور . كه بصورت زیر انها را تعیین میكنید در این فایل Username:password Username:password Username:password حواستان باشد كه هر كدام در یك خط باشند و همچنین اشتباها فضای space در اخر خط*ها وارد نكنید . در ضمن برای نام*های كاربری كه مشكلی پیش نمی*اید اما برای كلمه*های عبور برای افزایش امنیت باید از نرم افزارهایی كه انها را تبدیل میكنند استفاده كنید . كه بعدا كمی در این مورد توضیح خواهم داد . یادتان باشد كه این فایل را در فولدر*های بالایی www یا public_html بگذارید یعنی در فولدر main . حال برای انكه مشخص كنید كدام بخش از سایت یا كدام دایركتوری شامل رمز عبور بشوند باید به این صورت عمل كنید در فایل htaccess خطوط زیر را اضافه كنید. AuthUserFile /home/pathto/.htpasswd AuthType Basic AuthName "Secret Place" <LIMIT GET POST> require valid-user </LIMIT> دستورات فوق باعث میشوند كه در صورت نادرستی و عدم تطابق كلمه عبور با انچه كه در فایل مربوطه ثبت شده از ورود كاربر جلوگیری كند . بنابراین اگر كاربری خواست وارد دایركتوری شود كه بدینوسیله محافظت میشد یك منوی پاپ آپ ظاهر میشود كه نام كاربری و رمز عبور را میطلبد . اگر خواستید در یك فولدر تنها از یك فایل محافظت كنید و عملیات پسورد گذاری تنها برروی یك فایل انجام شود دستورات زیر را در فایل وارد كنید . <files "filename.cgi"> AuthUserFile /home/pathto/.htpasswd AuthType Basic AuthName "Secret Place" require valid-user </files> برای محافظت از خود فایل .htaccess نیز میتوانید خط زیر را وارد كنید : <files ".htaccess"> order allow,deny deny from all </files> اگر هاست شما از این فایل پشتیبانی میكند اما از SSI پشتیبانی نمیكند كافیست خطوط زیر را وارد كنید تا از SSI هم پشتیبانی شود . AddType text/html .shtml AddHandler server-parsed .shtml Options Indexed FollowSymLinks Includes خط اول بیان میكند كه كلیه فایل*ها با پسوند shtml دارا صحت هستند خط دوم یك handler اضافه میكند خط سوم باعث میشود سرور این فایل*ها را اجرا كند . بنابراین شما خودتان بدون نیاز به درخواست از ادمین سرور توانستید SSI را فعال كنید . اگر هم دوست دارید فایل*های SSI بصورت جداگانه از فایل*های html نباشند میتوانید خطوط زیر را اضافه كنید : AddType text/html .shtml .html . htm AddHandler server-prased .shtml .html .htm Options Indexes FollowSymLinks Includes این خطوط باعث میشوند كه كلیه فایل*ها با پسوند html نیز به سرور برای اجرا شدن منتقل شوند تا اگر كدی كه برای SSI باشد داشته باشد را اجرا كند و سپس صفحه شروع به بارگذاری كند .
  9. <p>پسوردش اینه : joomlaforum.ir</p>

  10. سلام. اموزش شل گیری با استفاده از باگ xss در vBulletin تو این فیلم نفوذگر با استفاده از باگ XSS در یک انجمن vBulletin به راحتی Reverse Shell میگیره ! دانلود فیلم از سرور اژاکس http://ajaxtm.com/upload/1/VBSeo.0day.AjaxTm.Com_www.ajaxtm.com.mp4 تولز مورد استفاده و اطلاعات بیشتر http://www.exploit-db.com/vbseo-from-xss-to-reverse-php-shell/ تشکر یادتون نره
  11. خوب اینم درباره کرک شدن رمزعبور و آنیکرک کردن هش که یکی از دوستان سوال کرده بود پایان درس هش و نوع متوسط
  12. طريقه "Hash" شدن پسورد ها به اين صورت هست : 1) مقدار رشته اي "hello" به "5d41402abc4b2a76b9719d911017c592" هاش شده 2) برای مثال در اينجا اگر سالت ما "testsalt" باشد، رشته هاش شده تبديل به "5d41402abc4b2a76b9719d911017c592testsalt" ميشود 3) و در آخر رشته جديد (Hash + Salt) برای بار دوم هاش شده و به "b9a8f3032597bc73d564a6c846787f5b" تبديل ميشود برای نوشتن کرکر (در اينجا با PHP) کافيه از : کد: md5(md5($pass).$salt) ________________________________________ اطلاعات اساسی در مورد password (۱) اطلاعات اساسی در مورد password چيست؟ اکثر accountها روی سيستم*های کامپيوتری معمولا متدهای خاصی از دسترسی محدود به آن account دارند. هر زمان که قصد دسترسی به يک سيستم داشته باشيد بايد يک ID صحيح را وارد کرده و با وارد کردن password وارد account خود شويد. اکثر سيستم*ها پسوردها را نشان نمی*دهند و بجای کاراکترهای واقعی از ستاره يا نقطه استفاده می*کنند. روی اکثر سيستم*ها پسورد از ميان چندين الگوريتم عبور داده می*شود تا بصورت hash (رمز** شده) درآيد. hash معمولا بيشتر از کاراکترهائی است که بعنوان پسورد وارد شده*اند. معمولا hash بصورت one-way (غيرقابل برگشت) درست می*شود يعنی با هيچ الگوريتمی نمی*توان hash را به متن اصلی تبديل کرد. اکثر سيستم*ها در هنگام authentication (تعيين هويت) پسوردهای ذخيره شده را آشکار نمی*کنند و آنها از ابتدا متن وارد شده را hash کرده و با hashه ذخيره شده مقايسه می*کنند. در رمز نويسی بعضی از الگوريتم*ها بهتر از الگوريتم*های ديگر برای ساختن one-way hash هستند. در اين سری مقالات توجه ما روی سيستم* عامل*های NT, Netware, Unix خواهد بود. که همگی از الگوريتم تقريبا يکسانی استفاده می*کنند. برای crack کردن يک پسورد لازم است شما يک کپی از hash که روی سرور ذخيره شده است بگيريد و بعد الگوريتم را بکار بگيريد تا hash شده متن*های شما را توليد کند تا زمانيکه hash شما با hashه سرور يکسان شود. در اين هنگام کلمه*ای که شما برای توليد hash بکار برده*ايد همان پسورد سيستم مورد حمله شما می*باشد. چون انجام اين کار بروش دستی زمان زيادی می*برد از اتوماسيون استفاده می*شود. نرم*افزارهای رايگان زيادی در اينترنت برای شکستن پسوردهای سيستم* عامل*های مورد مطالعه ما وجود دارد. ۳ (۲) چرا از hashها محافظت می*کنيم؟ اگر hashهای غير قابل برگشت نه خود پسوردها بلکه مشتق آنها هستند پس چرا از آنها محافظت می*کنيم؟ چون الگوريتمی که آنها را توليد می*کند شناخته شده است. يک هکر می*تواند با برنامه*های مخصوص اين کار بسادگی پسوردهای ممکن را رمز کرده و آنها را با پسوردهای داخل hash مقايسه کند تا زمانيکه پسورد را پيدا کند. دو روش برای شکستن پسورد بکار برده می*شود: روش Dictionary و روش Brute Force. معمولا hashها در قسمتی از سيستم ذخيره می*شوند که امينت ويژه*ای دارد تا دسترسی کراکرهای مستعد به آن محدود شود. ۳ (۳) منظور از شکستن پسورد بروش Dictionary چيست؟ يک برنامه شکننده پسورد بسادگی ليستی از لغات dictionary را می*گيرد و هر لحظه يک لغت را رمز کرده و با hashه سيستم مقايسه می*کند تا زمانيکه که هر دو hash برابر شوند و پسورد شکسته شود. در اين هنگام لغتی از dictionary که آزمايش شده است همان پسورد سيستم است. بعضی از اين برنامه*ها می*توانند با بکارگيری فيلترهای مخصوص کلمات را دستکاری کنند. قواعد اين فيلترها به شما اجازه می*دهد مثلا (rnazari) را به (RNazAr1) تغيير دهيد. استفاده از اين فيلترها باعث می*شوند که شما بتوانيد از يک ليست کوچک ليستی بزرگ ساخته و آزمايش کنيد. بهترين نوع شناخته شده از اين فيلترهای خارق*العاده در برنامه*های Crack که برای محيط Unix طراحی شده*اند موجود است. قواعد اين فيلترها کلا شناخته شده و بتازگی در برنامه*هايی که برای NT طراحی شده اند گنجانيده شده است. اگر برنامه Crackerه شما چنين قابليتی ندارد شما می*توانيد با برنامه Therion's Password Utility که برای محيط DOS طراحی شده است می*تواند با روش*های زيادی يک ليست کوچک از کلمات را از شما گرفته و به يک ليست خيلی بزرگ تبديل کند و سپس شما می*توانيد آنرا بکار بگيريد. ۳ (۴) منظور از شکستن پسورد بروش Brute Force چيست؟ يک برنامه Cracker بروش Brute Force بسادگی و با قواعدی خاص لغاتی را بصورت اتوماتيک ساخته و با hashه مقايسه می*کند. فرق اين روش با روش قبلی در اين است که تمام لغات بصورت اتوماتيک ساخته می*شوند. از ديدگاه يک هکر اين روش خيلی وقت گير بوده و قسمت زيادی از قدرت CPU را هدر می*دهد. خيلی از برنامه*های اين حملات تنظيماتی را به شما می*دهند تا با اين تنظيمات در زمان صرف شده و قدرت CPU صرفه*جويی کنيد. مثلا می*توانيد طول پسورد ساخته شده يا کاراکترهايی که برای ساختن لغات بکار برده خواهند شد را معين کنيد. ۳ (۵) کدام روش برای Crack کردن بهترين است؟ جواب اين سوال مرتبط است با: هدف شما،* برنامه* Crackی که بکار می*بريد، و سيستم عامل سرور هدف. چند فايل dictionary با طولهای متفاوت مثلا ۴، ۵،* ۶، ۷، ۸، ... از اينترنت بگيريد بعد اين فايلها را گسترش داده و فيلترهايی روی آنها اعمال کنيد تا هرچه جامع*تر شود. و در اکثر موارد انتخاب نخست*تان روش dictionary باشد اگر با اين همه لغات بازهم نتوانستيد يک hash را بشکنيد. ديگر متاسفانه بايد از روش Brute Force استفاده کرده و سيستم خود را چند روزی مشغول اين کار کنيد. ۳ (۶) منظور از Salt (نمک) چيست؟ برای بالا بردن امنيت پسوردها بعضی از الگوريتم*ها از Salt استفاده می*کنند اين عمل باعث می*شود پيچيدگی پسورد زيادتر و شکستن آن سخت*تر شود. Saltها معمولا ۲ تا ۸ بايت درازا دارند و با الگوريتم خود باعث می*شوند که ابهام one-way hash بيشتر شود. اکثر سيستم عامل*ها اين روش را پوشش می*دهند بجز NT. اگر دو پسورد عين هم با اين الگوريتم hash شود hashها عين هم نخواهند بود و در اين روش ۴۰۹۶ نوع hash از يک پسورد می*توان ساخت و کار شکستن نيز به همان اندازه سخت*تر خواهد شد. با همه اين احوال Salt نيز امنيت صد در صد پسورد را گارانتی نمی*کند. ۳ (۷) حمله برای شکستن پسورد چه خطراتی دارد؟ يکی از خطرات اين حمله محکوم بودن شما از نظر قوانين است البته فعلا در کشور ما چنين قانونی وجود ندارد و فقط در شرايطی شما را دستگير می*کنند که شما به يکی از سرورهای دولتی، اداری يا بانکی حمله کرده باشيد. البته اگر نوع اشتراک شما کارتی نباشد و شماره تلفن*تون را مخفی نکرده باشين در غير اينصورت فکر نکنم کسی بتواند شما را رديابی کند. اگر شما نتوانيد فايل hash را کپی کنيد شايد دلتان بخواهد که بصورت remote اين حمله را پايه*ريزی کنيد که در اينصورت يک اشکالی پيش خواهد آمد. اکثر سرورها طوری تنظيم می*شوند که اگر شما چندين بار پسورد را اشتباهی وارد کرديد دسترسی آن account را برای مدت زمانی که از پيش تعريف شده است قطع می*کنند. اما اين روش خود يک ايرادی دارد و آن اينکه سرور در اين حالت دچار حمله (DoS (Denial-of-Service می*شود * Hash چيست؟ Hash در لغت به معنای خرد کردن چيزی و در هم کردن آن است. در رايانه Hash نام تابعی است که در موارد بسيار زيادی کاربرد دارد. کار اين تابع اين است که هر ورودی که دريافت می کند، به وسيله تبديلی، به يک مقدار عددی می نگارد. پس به هر تابعی که اين کار را انجام دهد، عنوان Hash اطلاق می شود. الگوريتم های Hash می توانند به صورتهای مختلفی پياده شوند، اما بهترين الگوريتم Hash الگوريتمی است که احتمال يک به يک بودن آن بيشتر باشد. يعنی اين که کمترپيش بيايد که به ازای ۲ ورودی متفاوت، ععد يکسانی توليد کند. ازاين روش، معمولا برای تبديل درايه از يک ساختار داده ای مانند يک جدول به محل متناظرآن، در آن ساختار استفاده می شود. برای مثال فرض کنيد يک جدول از کلمات انگليسی داريم . دراين صورت تابع Hash ما، با عملياتی که روی مثلا مقاديراسکی هر کاراکتر کلمه انجام می دهد، آن را به عددی تبديل می کند که محل آن را در جدول کلمات مشخص می کند. الگوريتم هایHash در تعيين محل داده ها در حافظه های نهان (Cache) هم مورد استفاده قرار می گيرند. يکی ديگر از موارد ايتفاده از Hash نيز، در هنگام خلاصه کردن پيغام در ساختن يک امضای ديجيتالی است.( ديجيتالم کجا بود؟) پيغامی که به وسيله يک الگوريتم Hash خلاصه شده، قابل باز يابی نيست. ----------- مقدار Hash رمزنگاری مبتنی بر کليد عمومی بر پايه يک مقدار hash ، استوار است . مقدار فوق ، بر اساس يک مقدار ورودی که دراختيار الگوريتم hashing گذاشته می گردد ، ايجاد می گردد. در حقيقت مقدار hash ، فرم خلاصه شده ای از مقدار اوليه ای خود است . بدون آگاهی از الگوريتم استفاده شده تشخيص عدد ورودی اوليه بعيد بنظر می رسد . مثال زير نمونه ای در اين زمينه را نشان می دهد : عدد ورودی الگوريتم Hash مقدار 10,667 Input # x 143 1,525,381 تسخيص اينکه عدد 1.525.381 ( مقدار hash) از ضرب دو عدد 10.667 و 143 بدست آمده است ، کار بسيار مشکلی است . در صورتيکه بدانيم که يکی از اعداد 143 است ، تشخيص عدد دوم کار بسيار ساده ای خواهد بود. ( عدد 10.667) .رمز نگاری مبتنی بر کليد عمومی بمراتب پيچيده تر از مثال فوق می باشند. مثال فوق صرفا" ايده اوليه در اين خصوص را نشان می دهد. کليدهای عمومی عموما" از الگوريتم های پيچيده و مقادير Hash بسيار بزرگ برای رمزنگاری استفاده می نمايند. در چنين مواردی اغلب از اعداد 40 و يا حتی 128 بيتی استفاده می شود. يک عدد 128 بيتی دارای 128 2 حالت متفاوت است . تشکر یادتون نره :4d564ad6:
  13. برنامه بازیابی پسوردهای Hash شده PasswordsPro 3.1.1.0 هش را می توان به صورت اثر انگشت دیجیتالی یک داده در نظر گرفت. با این روش شما می توانید رشته ای اندازه-ثابت (fixed length) از یک داده به دست آورید که با روش های ریاضی به صورت "یک طرفه" رمزنگاری شده است. کشف رشته اصلی از رشته هش آن (عملیات معکوس) به صورت کارا تقریبا غیر ممکن است. نکته دیگر اینکه هر داده یک رشته هش شده کاملا منحصر به فرد ایجاد می کند( احتمال یکی شدن رشته های هش دو رشته متفاوت در الگوریتم MD5 یک در 3.4028236692093846346337460743177e+38 می باشد.. این خواص ، هش کردن را به روشی کارا و ایده آل برای ذخیره سازی کلمات عبور در برنامه های شما تبدیل می کند. چرا؟ برای این که حتی اگر یک نفوذگر(Hacker) بتواند به سیستم و بانک اطلاعاتی شما نفوذ کند و بخشی از اطلاعات شما را به دست آورد (شامل کلمات عبور هش شده) نمی تواند کلمات عبور اولیه را از روی آن ها بازیابی کند. PasswordsPro به شما کمک می کند تا در کمترین زمان بتوانید تمامی پسوردهای هش را از حالت هش در بیاورید. این برنامه قادر است 30 نوع از پسوردهای هش شده را رمزگشایی کند. لیست کامل را می توانید در ادامه مطلب مشاهده فرمایید. لیست برخی از هش های پشتیبانی شده توسط برنامه : MySQL – MySQL5 – DES(Unix) – MD2 – MD4 – MD4(HMAC) – MD4(Base64) – MD5 – MD5(APR) – MD5(Unix) – MD5(HMAC) – MD5(Base64) – MD5(phpBB3) – MD5(Wordpress) – MD5_HMAC($salt,MD5_HMAC($salt,$pass)) – SHA-1 – SHA-1(HMAC) – SHA-1(Base64) – SHA-1(Django) – SHA-256 – SHA-256(Unix) – SHA-256(Django) – SHA-256(md5($pass)) – SHA-256(PasswordSafe) – SHA-384 – SHA-384(Django) – SHA-512 – SHA-512(Unix) – Haval-128 – Haval-160 – Haval-192 – Haval-224 – Haval-256 – Tiger-128 – Tiger-160 – Tiger-192 – RipeMD-128 – RipeMD-160 – MaNGOS – Whirlpool – RAdmin v2.x – Lineage II C4 – Domain Cached Credentials – md5(md5($pass)) – md5($pass.$salt) – md5($salt.$pass) – md5(sha1($pass)) – md5($hex_salt.$pass) – md5(md5(md5($pass))) – md5(md5($pass).$salt) – md5(md5($salt).$pass) – md5($salt.md5($pass)) – md5($salt.$pass.$salt) – md5(md5($salt).md5($pass)) – md5(md5($pass).md5($salt)) – md5($salt.md5($salt.$pass)) – md5($salt.md5($pass.$salt)) – md5($salt.md5($pass).$salt) – md5(sha1(md5(sha1($pass)))) – md5($hex_salt.$pass.$hex_salt) – md5($username.md5($pass).$salt) – md5(md5($username.$pass).$salt) – sha1(md5($pass)) – sha1($salt.$pass) – sha1($pass.$salt) – sha1($username.$pass) – sha1($username.$pass.$salt) – sha1($salt.sha1($salt.sha1($pass))) عکس نرم افزار http://www.p30day.com/plugins/content/imagesresizecache/d4462ce408b90c720165ce8cbbe45575.jpeg دانلود با لینک مستقیم سرور اول https://rapidshare.com/files/3933860015/PasswordsPro_3.1.1.0__www.P30Day.com_.rar لینک مستقیم سرور دوم http://dl5.p30day.com/users/feisal/Software/PasswordsPro_3.1.1.0_%5Bwww.P30Day.com%5D.rar 13 MB رمز: www.p30day.com
  14. در pdf کامل آموزش داده ! پسورد : joomlaforum.ir
  15. انواع هش انواع مختلفی از الگوریتم های قوی هش کردن برای استفاده در برنامه های کاربردی موجود هستند، محبوب ترین آنها که مورد استفاده برنامه نویسان هستند MD5 و SHA-1 می باشند. سیستم های قدیمی تر از DES(Data Encryption Standard) استفاده می کردند. این روش ۵۶ بیتی دیگر یک روش قوی هش کردن محسوب نمی گردد. در PHP شما می توانید رشته هش را با استفاده از توابع md5() و sha1 تولید کنید. md5() یک رشته هش ۱۲۸ بیتی (۳۲ کاراکتر هگزادسیمال) برمی گرداند در حالیکه sha1() یک رشته هش ۱۶۰ بیتی (۴۰ کاراکتر هگزادسیمال) را بر می گرداند. <?php $string = 'PHP & Information Security'; printf("Original string: %sn", $string); printf("MD5 hash: %sn", md5($string)); printf("SHA-1 hash: %sn", sha1($string)); ?> در MySQL شما می توانید رشته هش را مستقیما و توسط توایع درونی md5() ، password() و یا sha1() تولید کنید. password() تابعی است که توسط خود MySQL برای سیستم تایید اعضایش یه کار می رود. این تابع یک رشته ۱۶ بایتی (۱۲۸ بیتی) – در MySQL قبل ازنسخه ۴٫۱ – و یک رشته ۴۱ بایتی ( ۳۲۸ بیتی) بر پایه الگوریتم SHA-1 دوگانه – در MySQL 4.1 به بالا – تولید می کند. md5() از نسخه ۳٫۲۳٫۲ به MySQL اضافه گردید و sha1() در نسخه ۴٫۰٫۲ اضافه شد. mysql> select PASSWORD( 'PHP & Information Security' ); +------------------------------------------+ | PASSWORD( 'PHP & Information Security' ) | +------------------------------------------+ | 379693e271cd3bd6 | +------------------------------------------+ 1 row in set (0.00 sec) mysql> select MD5( 'PHP & Information Security' ); +-------------------------------------+ | MD5( 'PHP & Information Security' ) | +-------------------------------------+ | 88dd8f282721af2c704e238e7f338c41 | +-------------------------------------+ 1 row in set (0.01 sec) Note: Using MySQL's password() function in your own applications isn't recommended – the algorithm used has changed over time and prior to 4.1 was particularly weak. شما ممکن است ترجیح دهید تا از MySQL برای تولید رشته هش در برنامه های خود استفاده نمایید. مثلا در مثال این مقاله : <?php /* Store user details */ $sql = 'INSERT INTO user (username, passwordHash) VALUES (?, SHA1(?))'; $result = $db->query($sql, array($_POST['username'], $_POST['password'])); ?> نقاط ضعف از دیدگاه امنیتی ، ذخیره کردن رشته های هش کلمات عبور به صورت تنها در بانک اطلاعاتی کافی است تا کار یک نفوذگر را ده ها برابر مشکل تر کند. حال بگذارید ببینیم یک نفوذگر پس از دسترسی به این رشته های هش شده چه تلاش هایی برای بازیابی آن ها می کند، آیا او می تواند کلمات عبور اصلی را بازیابی کند ، یا خیر؟ او ابتدا می تواند با مشاهده جدول اعضا و با پیدا کردن رشته های هش مشایه حساب هایی که دارای کلمات عبور یکسان هستند را بیابد! البته این روش تا زمانی که او کلمه عبور هیچ کدام از اعضا را نداند مفید نیست و خطری را ایجاد نمی کند. روش معمول برای بازیابی رشته اصلی از رشته هش شده شکستن (Crack) کردن – یا به عبارت دیگر brute forcing – می باشد. با استفاده از این روش نفوذگر رشته های هش تمامی عباراتی که احتمال می دهد به عنوان کلمه عبور به کار برده شوند – مثلا با استفاده از یک دیکشنری لغات – را تولید می کند و با مقایسه آن ها با مقادیر ذخیره شده در بانک اطلاعاتی اقدام به یافتن کلمات عبور می نماید. رایانه های پیشرفته امروزی توانایی تولید رشته های هش MD5 و SHA-1 را به صورت بسیار سریع دارا می باشند – در بعضی حالات با سرعت هایی در حدود چند هزار در ثانیه – . رشته های هش می توانند برای تمامی کلمات یک دیکشنری تولید شوند(حتی با احتساب حالت های متفاوت حرفی و عددی) . با این که کلمات عبور مناسب و طویل سطح امنیتی خوبی را در برابر چنین حملاتی فراهم می کنند، شما نمی توانید مطمئن باشید که کاربران شما همواره از چنین مواردی آگاه باشند. روشمان را بهبود دهیم نقاط ضعفی که در مورد هش کردن بیان گردیدند با اضافه کردن تغییر کوچکی در الگوریتم هش کردن به راحتی قابل برطرف کردن می باشند. می توانیم قبل از تولید هش ، یک رشته تصادفی با اندازه از پیش تعیین شده تولید کنیم و آن را به ابتدای کلمه عبور خود اضافه نماییم(این رشته را salt می نامیم). با اضافه شدن این رشته که به اندازه کافی تصادفی و به اندازه کافی طویل می باشد ، رشته هش نهایی هر بار که تابع را اجرا می کنیم منحصر به فرد خواهد بود و با دفعات قبلی فرق خواهد داشت. بدیهی است که این رشته salt نیز باید در بانک اطلاعاتی اعضا ذخیره گردد ، ولی این تنها به معنی اضافه شدن چند کاراکتر به اندازه فیلد مورد نظر است. هنگام بررسی ورود کاربر ما همان پروسه قبلی را پی می گیریم، با این تفاوت که این بار ما از رشته salt که از بانک اطلاعاتی به دست می آوریم استفاده می کنیم نه از حالت تولید تصادفی آن . با مقایسه رشته هشی که با استفاده از ورودی کاربر به دست آمده با مقدار ذخیره شده در بانک اطلاعاتی کاربر می توانیم صحت آن را مشخص کنیم. <?php define('SALT_LENGTH', 9); function generateHash($plainText, $salt = null) { if ($salt === null) { $salt = substr(md5(uniqid(rand(), true)), 0, SALT_LENGTH); } else { $salt = substr($salt, 0, SALT_LENGTH); } return $salt . sha1($salt . $plainText); } ?> Note: The function above is limited in that the maximum salt length is 32 characters. You may wish to write your own salt generator to overcome this limit and increase the entropy of the string. هنگام فراخوانی generateHash() با استفاده از تنها یک آرگومان(کلمه عبور) یک رشته تصادفی تولید شده و به عنوان رشته salt استفاده می گردد. رشته تولید شده که تشکیل شده از رشته salt و رشته هش شده است در بانک اطلاعاتی ذخیره می گردد. هنگام بررسی ورود کاربر ، پروسه کاملا متفاوت است زیرا شما رشته salt را می دانید. – دقت کنید از آن جایی که طول رشته salt ثابت است ، پس از دریافت اطلاعات کاربر از بانک اطلاعاتی با یک بار استفاده از تابع substr می توانید رشته salt را بیابید – این رشته salt به عنوان پارامتر دوم به همراه کلمه عبور ارسالی کاربر به تابع generateHash() فرستاده می شود و سپس عمل مقایسه صورت می پذیرد. با استفاده از salt احتمال یکی شدن رشته های هش کابران در صورت یکی بودن کلمات عبورشان در بانک اطلاعاتی از بین می رود. استفاده از دیکشنری برای حمله نیز دیگر کارایی نخواهد داشت، زیرا نفوذگر باید برای هر رکورد در بانک اطلاعاتی تمامی رشته های هش دیکشنری خود را دوباره محاسبه کند!
  16. ز روز اول که وبلاگم رو راه انداخته بودم ، همان طور که تو تیتر و تگش هم هست ، هدفم تا حدود زیادی نوشتن در مورد PHP بود ، ولی تقریبا می شه گفت به غیر از کارهایی که در مورد وردپرس انجام دادم و بلاگ کردم دیگه مطلبی در مورد PHP ننوشتم ، تصمیم گرفتم یه سری مقاله در مبحث “امنیت در برنامه نویسی با PHP” ترجمه کنم یا بنویسم تا هم ضعف هایی که تو این زمینه میون برنامه نویس های ایرانی وجود داره بر طرف بشه و هم کم کم وبلاگم هم رنگ و بوی PHP بگیره. مقاله حاضر با عنوان Password Hashing توسط James McGlinn نوشته شده و اینجا و در سایت PHP Security Consortium منتشر شده. هش کردن کلمات عبور مبحث جالب و ضروری برای هر برنامه نویس برنامه های کابردی با PHP محسوب می شه. سطح این مقاله مبتدی و متوسطه و آشنایی مختصری با MySQL هم نیاز داره. در این مقاله سعی داریم مبحث به رمز درآوردن یک طرفه کلمات عبور(Password Hashing) در PHP را مورد بحث قرار دهیم، موضوعی که عموما توسط بسیاری از نوآموزان PHP نادیده گرفته می شود.در بسیاری از نرم افزارهای (ضعیفی) که با PHP نگاشته می شوند اطلاعات اعضا (User Profiles) به صورت متن ساده (Plain Text) در بانک اطلاعاتی ذخیره می گردد. هش کردن کلمات عبور راهی است برای یه رمز در آوردن(Encrypt) کردن کلمات عبور قبل از ذخیره سازی آن ها در بانک اطلاعاتی تا هنگام دسترسی افراد غیر مجاز به بانک اطلاعاتی ، میزان خسارت کمتر گردد. هش کردن به هیچ وجه روش جدیدی به حساب نمی آید و از مدتها قبل در سیستم های مبتنی بر UNIX برای ذخیره سازی کلمات عبور استفاده می شده است. در این مقاله سعی خواهیم کرد تا با بیان مفاهیم هش ، راه های عملی استفاده از آن در PHP (و MySQL) را برای دخیره کلمات عبور در قالب مثال هایی تشریح کنیم. پیش گفتار هنگام مطالعه این مقاله مشاهده خواهید نمود که ما از روشی به نامه SHA-1(Security Hashing Algorithm 1) برای هش کردن استفاده خواهیم کرد. تا هنگام نگاشته شدن این مقاله گروهی از محققان – Xiaoyun Wang, Yiqun Lisa Yin, Hongbo Yu – نشان داده اند که SHA-1 ضعیف تر از آن چیزی است که به نظر می رسیده است، به این معنی که هم اکنون برای موارد خاص مانند امضاهای دیجیتالی ، الگوریتم های قوی تری مانند SHA-256 و SHA-512 توصیه می گردد ولی برای هش کردن کلمات عبوردر برنامه های امروزی SHA-1 هنوز سطح امنیت بسیار خوبی را فراهم می کند. برای اطلاعات بیشتر لطفا تحلیل Bruce Schneier را در مورد این موضوع ببینید. http://www.schneier.com/blog/archive...nalysis_o.html هش چیست؟ هش (Hash, Hash Code, Digest, Message Digest هم نامیده می شود) را می توان به صورت اثر انگشت دیجیتالی یک داده در نظر گرفت. با این روش شما می توانید رشته ای اندازه-ثابت (fixed length) از یک داده به دست آورید که با روش های ریاضی به صورت "یک طرفه" رمزنگاری شده است. کشف رشته اصلی از رشته هش آن (عملیات معکوس) به صورت کارا تقریبا غیر ممکن است. نکته دیگر اینکه هر داده یک رشته هش شده کاملا منحصر به فرد ایجاد می کند( احتمال یکی شدن رشته های هش دو رشته متفاوت در الگوریتم MD5 یک در ۳٫۴۰۲۸۲۳۶۶۹۲۰۹۳۸۴۶۳۴۶۳۳۷۴ ۶۰۷۴۳۱۷۷e+38 می باشد.. این خواص ، هش کردن را به روشی کارا و ایده آل برای ذخیره سازی کلمات عبور در برنامه های شما تبدیل می کند. چرا؟ برای این که حتی اگر یک نفوذگر(Hacker) بتواند به سیستم و بانک اطلاعاتی شما نفوذ کند و بخشی از اطلاعات شما را به دست آورد (شامل کلمات عبور هش شده) نمی تواند کلمات عبور اولیه را از روی آن ها بازیابی کند. با این روش چگونه اعضا را شناسایی کنیم ؟ تا کنون نشان داده ایم که بازیابی کلمه عبور اصلی از روی رشته هش تقریبا غیر ممکن است ، خب چگونه برنامه های ما تشخیص دهند که کلمه عبور وارد شده توسط کاربر صحیح است ؟ به سادگی ! با تولید رشته هش کلمه عبور وارد شده توسط کاربر و مقایسه آن با رشته هش ذخیره شده در رکورد بانک اطلاعاتی مربوط به کاربر می توانید متوجه شوید که آیا دو رشته با هم برابرند یا نه. بگذارید با ذکر یک مثال این بحث را ادامه دهیم. ثبت نام اعضا و بازبینی کلمات عبور در طی پروسه ثبت نام ، کاربر جدید کلمه عبور انتخابی خود را در اختیار برنامه ما قرار می دهد(ترجیحا با بازبینی – Verification – و در یک جلسه امن). این کار توسط تکه کدی مانند زیر انجام می گیرد، توجه کنید که نام های کابری و کلمات عبور را در بانک اطلاعاتی ذخیره می کنیم. عکس : <?php /* Store user details */ $passwordHash = sha1($_POST['password']); $sql = 'INSERT INTO user (username,passwordHash) VALUES (?,?)'; $result = $db->query($sql, array($_POST['username'], $passwordHash)); ?> در هنگام مراجعه بعدی کاربر برای ورود به سیستم ، برای تایید او از تکه کدی مانند زیر استفاده می کنیم عکس : <?php /* Check user details */ $passwordHash = sha1($_POST['password']); $sql = 'SELECT username FROM user WHERE username = ? AND passwordHash = ?'; $result = $db->query($sql, array($_POST['username'], $passwordHash)); if ($result->numRows() < 1) { /* Access denied */ echo 'Sorry, your username or password was incorrect!'; } else { /* Log user in */ printf('Welcome back %s!', $_POST['username']); } ?>
  17. در این مقاله یاد میگیری که هش چیه و هش md5 چیه پسورد joomlaforum.ir
  18. ۱- معرفی و اصطلاحات رمزنگاری علم کدها و رمزهاست. یک هنر قدیمی است و برای قرنها بمنظور محافظت از پیغامهایی که بین فرماندهان، جاسوسان،* عشاق و دیگران ردوبدل می*شده، استفاده شده است تا پیغامهای آنها محرمانه بماند. هنگامی که با امنیت دیتا سروکار داریم، نیاز به اثبات هویت فرستنده و گیرنده پیغام داریم و در ضمن باید از عدم تغییر محتوای پیغام مطمئن شویم. این سه موضوع یعنی محرمانگی، تصدیق هویت و جامعیت در قلب امنیت ارتباطات دیتای مدرن قرار دارند و می*توانند از رمزنگاری استفاده کنند. اغلب این مساله باید تضمین شود که یک پیغام فقط میتواند توسط کسانی خوانده شود که پیغام برای آنها ارسال شده است و دیگران این اجازه را ندارند. روشی که تامین کننده این مساله باشد "رمزنگاری" نام دارد. رمزنگاری هنر نوشتن بصورت رمز است بطوریکه هیچکس بغیر از دریافت کننده موردنظر نتواند محتوای پیغام را بخواند. رمزنگاری مخفف*ها و اصطلاحات مخصوص به خود را دارد. برای درک عمیق*تر به مقداری از دانش ریاضیات نیاز است. برای محافظت از دیتای اصلی ( که بعنوان plaintext شناخته می*شود)، آنرا با استفاده از یک کلید (رشته*ای محدود از بیتها) بصورت رمز در می*آوریم تا کسی که دیتای حاصله را می*خواند قادر به درک آن نباشد. دیتای رمزشده (که بعنوان ciphertext شناخته می*شود) بصورت یک سری بی*معنی از بیتها بدون داشتن رابطه مشخصی با دیتای اصلی بنظر می*رسد. برای حصول متن اولیه دریافت*کننده آنرا رمزگشایی می*کند. یک شخص ثالت (مثلا یک هکر) می*تواند برای اینکه بدون دانستن کلید به دیتای اصلی دست یابد، کشف رمز*نوشته (cryptanalysis) کند. بخاطرداشتن وجود این شخص ثالث بسیار مهم است. رمزنگاری دو جزء اصلی دارد، یک الگوریتم و یک کلید. الگوریتم یک مبدل یا فرمول ریاضی است. تعداد کمی الگوریتم قدرتمند وجود دارد که بیشتر آنها بعنوان استانداردها یا مقالات ریاضی منتشر شده*اند. کلید، یک رشته از ارقام دودویی (صفر و یک) است که بخودی*خود بی*معنی است. رمزنگاری مدرن فرض می*کند که الگوریتم شناخته شده است یا می*تواند کشف شود. کلید است که باید مخفی نگاه داشته شود و کلید است که در هر مرحله پیاده*سازی تغییر می*کند. رمزگشایی ممکن است از همان جفت الگوریتم و کلید یا جفت متفاوتی استفاده کند. دیتای اولیه اغلب قبل از رمزشدن بازچینی می*شود؛ این عمل عموما بعنوان scrambling شناخته می*شود. بصورت مشخص*تر، hash functionها بلوکی از دیتا را (که می*تواند هر اندازه*ای داشته باشد) به طول از پیش مشخص*شده کاهش می*دهد. البته دیتای اولیه نمی*تواند از hashed value بازسازی شود. Hash functionها اغلب بعنوان بخشی از یک سیستم تایید هویت مورد نیاز هستند؛ خلاصه*ای از پیام (شامل مهم*ترین قسمتها مانند شماره پیام، تاریخ و ساعت، و نواحی مهم دیتا) قبل از رمزنگاری خود پیام، ساخته *و hash می*شود. یک چک تایید پیام (Message Authentication Check) یا MAC یک الگوریتم ثابت با تولید یک امضاء برروی پیام با استفاده از یک کلید متقارن است. هدف آن نشان دادن این مطلب است که پیام بین ارسال و دریافت تغییر نکرده است. هنگامی که رمزنگاری توسط کلید عمومی برای تایید هویت فرستنده پیام استفاده می*شود، منجر به ایجاد امضای دیجیتال (digital signature) می*شود. ۲- الگوریتم*ها طراحی الگوریتمهای رمزنگاری مقوله*ای برای متخصصان ریاضی است. طراحان سیستمهایی که در آنها از رمزنگاری استفاده می*شود، باید از نقاط قوت و ضعف الگوریتمهای موجود مطلع باشند و برای تعیین الگوریتم مناسب قدرت تصمیم*گیری داشته باشند. اگرچه رمزنگاری از اولین کارهای شانون (Shannon) در اواخر دهه ۴۰ و اوایل دهه ۵۰ بشدت پیشرفت کرده است، اما کشف رمز نیز پابه*پای رمزنگاری به پیش آمده است و الگوریتمهای کمی هنوز با گذشت زمان ارزش خود را حفظ کرده*اند. بنابراین تعداد الگوریتمهای استفاده شده در سیستمهای کامپیوتری عملی و در سیستمهای برپایه کارت هوشمند بسیار کم است. ۱-۲ سیستمهای کلید متقارن یک الگوریتم متقارن از یک کلید برای رمزنگاری و رمزگشایی استفاده می*کند. بیشترین شکل استفاده از رمزنگاری که در کارتهای هوشمند و البته در بیشتر سیستمهای امنیت اطلاعات وجود دارد data encryption algorithm یا DEA است که بیشتر بعنوان DES* شناخته می*شود. DES یک محصول دولت ایالات متحده است که امروزه بطور وسیعی بعنوان یک استاندارد بین*المللی شناخته *می*شود. بلوکهای ۶۴بیتی دیتا توسط یک کلید تنها که معمولا ۵۶بیت طول دارد، رمزنگاری و رمزگشایی می*شوند. DES* از نظر محاسباتی ساده است و براحتی می*تواند توسط پردازنده*های کند (بخصوص آنهایی که در کارتهای هوشمند وجود دارند) انجام گیرد. این روش بستگی به مخفی*بودن کلید دارد. بنابراین برای استفاده در دو موقعیت مناسب است: هنگامی که کلیدها می*توانند به یک روش قابل اعتماد و امن توزیع و ذخیره شوند یا جایی که کلید بین دو سیستم مبادله می*شوند که قبلا هویت یکدیگر را تایید کرده*اند عمر کلیدها بیشتر از مدت تراکنش طول نمی*کشد. رمزنگاری DES عموما برای حفاظت دیتا از شنود در طول انتقال استفاده می*شود. کلیدهای DES ۴۰بیتی امروزه در عرض چندین ساعت توسط کامپیوترهای معمولی شکسته می*شوند و بنابراین نباید برای محافظت از اطلاعات مهم و با مدت طولانی اعتبار استفاده شود. کلید ۵۶بیتی عموما توسط سخت*افزار یا شبکه*های بخصوصی شکسته می*شوند. رمزنگاری DESسه*تایی عبارتست از کدکردن دیتای اصلی با استفاده از الگوریتم DES* که در سه مرتبه انجام می*گیرد. (دو مرتبه با استفاده از یک کلید به سمت جلو (رمزنگاری) و یک مرتبه به سمت عقب (رمزگشایی) با یک کلید دیگر) مطابق شکل زیر: این عمل تاثیر دوبرابر کردن طول مؤثر کلید را دارد؛ بعدا خواهیم دید که این یک عامل مهم در قدرت رمزکنندگی است. الگوریتمهای استاندارد جدیدتر مختلفی پیشنهاد شده*اند. الگوریتمهایی مانند Blowfish و IDEA برای زمانی مورد استفاده قرار گرفته*اند اما هیچکدام پیاده*سازی سخت*افزاری نشدند بنابراین بعنوان رقیبی برای DES برای استفاده در کاربردهای میکروکنترلی مطرح نبوده*اند. پروژه استاندارد رمزنگاری پیشرفته دولتی ایالات متحده (AES) الگوریتم Rijndael را برای جایگزیتی DES بعنوان الگوریتم رمزنگاری اولیه انتخاب کرده است. الگوریتم Twofish مشخصا برای پیاده*سازی در پردازنده*های توان*ـ*پایین مثلا در کارتهای هوشمند طراحی شد. در ۱۹۹۸ وزارت دفاع ایالات متحده تصمیم گرفت که الگوریتمها Skipjack و مبادله کلید را که در کارتهای Fortezza استفاده شده بود، از محرمانگی خارج سازد. یکی از دلایل این امر تشویق برای پیاده*سازی بیشتر کارتهای هوشمند برپایه این الگوریتمها بود. برای رمزنگاری جریانی (streaming encryption) (که رمزنگاری دیتا در حین ارسال صورت می*گیرد بجای اینکه دیتای کدشده در یک فایل مجزا قرار گیرد) الگوریتم RC4* سرعت بالا و دامنه*ای از طول کلیدها از ۴۰ تا ۲۵۶ بیت فراهم می*کند. RC4 که متعلق به امنیت دیتای RSA* است، بصورت عادی برای رمزنگاری ارتباطات دوطرفه امن در اینترنت استفاده می*شود. ۲-۲ سیستمهای کلید نامتقارن سیستمهای کلید نامتقارن از کلید مختلفی برای رمزنگاری و رمزگشایی استفاده می*کنند. بسیاری از سیستمها اجازه می*دهند که یک جزء (کلید عمومی یا public key) منتشر شود در حالیکه دیگری (کلید اختصاصی یا private key) توسط صاحبش حفظ شود. فرستنده پیام، متن را با کلید عمومی گیرنده کد می*کند و گیرنده آن را با کلید اختصاصی خودش رمزنگاری میکند. بعبارتی تنها با کلید اختصاصی گیرنده می*توان متن کد شده را به متن اولیه صحیح تبدیل کرد. یعنی حتی فرستنده نیز اگرچه از محتوای اصلی پیام مطلع است اما نمی*تواند از متن کدشده به متن اصلی دست یابد، بنابراین پیام کدشده برای هرگیرنده*ای بجز گیرنده مورد نظر فرستنده بی*معنی خواهد بود. معمولترین سیستم نامتقارن بعنوان RSA* شناخته می*شود (حروف اول پدیدآورندگان آن یعنی Rivest ، Shamir و Adlemen است). اگرچه چندین طرح دیگر وجود دارند. می*توان از یک سیستم نامتقارن برای نشاندادن اینکه فرستنده پیام همان شخصی است که ادعا می*کند استفاده کرد که این عمل اصطلاحا امضاء نام دارد. RSA شامل دو تبدیل است که هرکدام احتیاج به بتوان*رسانی ماجولار با توانهای خیلی طولانی دارد: امضاء، متن اصلی را با استفاده از کلید اختصاصی رمز می*کند؛ رمزگشایی عملیات مشابه*ای روی متن رمزشده اما با استفاده از کلید عمومی است. برای تایید امضاء بررسی می*کنیم که آیا این نتیجه با دیتای اولیه یکسان است؛ اگر اینگونه است، امضاء توسط کلید اختصاصی متناظر رمزشده است. به بیان ساده*تر چنانچه متنی از شخصی برای دیگران منتشر شود، این متن شامل متن اصلی و همان متن اما رمز شده توسط کلید اختصاصی همان شخص است. حال اگر متن رمزشده توسط کلید عمومی آن شخص که شما از آن مطلعید رمزگشایی شود، مطابقت متن حاصل و متن اصلی نشاندهنده صحت فرد فرستنده آن است، به این ترتیب امضای فرد تصدیق می*شود. افرادی که از کلید اختصاصی این فرد اطلاع ندارند قادر به ایجاد متن رمز*شده* نیستند بطوریکه با رمزگشایی توسط کلید عمومی این فرد به متن اولیه تبدیل شود. اساس سیستم RSA این فرمول است: X = Yk (mod r) که X متن کد شده، Y متن اصلی، k کلید اختصاصی و r حاصلضرب دو عدد اولیه بزرگ است که با دقت انتخاب شده*اند. برای اطلاع از جزئیات بیشتر می*توان به مراجعی که در این زمینه وجود دارد رجوع کرد. این شکل محاسبات روی پردازنده*های بایتی بخصوص روی ۸ بیتی*ها که در کارتهای هوشمند استفاده می*شود بسیار کند است. بنابراین، اگرچه RSA هم تصدیق هویت و هم رمزنگاری را ممکن می*سازد، در اصل برای تایید هویت منبع پیام از این الگوریتم در کارتهای هوشمند استفاده می*شود و برای نشاندادن عدم تغییر پیام در طول ارسال و رمزنگاری کلیدهای آتی استفاده می*شود. سایر سیستمهای کلید نامتقارن شامل سیستمهای لگاریتم گسسته می*شوند مانند Diffie-Hellman، ElGamal و سایر طرحهای چندجمله*ای و منحنی*های بیضوی. بسیاری از این طرحها عملکردهای یک*ـ*طرفه*ای دارند که اجازه تاییدهویت را می*دهند اما رمزنگاری ندارند. یک رقیب جدیدتر الگوریتم RPK* است که از یک تولیدکننده مرکب برای تنظیم ترکیبی از کلیدها با مشخصات مورد نیاز استفاده می*کند. RPK یک پروسه دو مرحله*ای است: بعد از فاز آماده*سازی در رمزنگاری و رمزگشایی (برای یک طرح کلید عمومی) رشته*هایی از دیتا بطور استثنایی کاراست و می*تواند براحتی در سخت*افزارهای رایج پیاده*سازی شود. بنابراین بخوبی با رمزنگاری و تصدیق*هویت در ارتباطات سازگار است. طولهای کلیدها برای این طرحهای جایگزین بسیار کوتاهتر از کلیدهای مورد استفاده در RSA* است که آنها برای استفاده در چیپ*کارتها مناسب*تر است. اما *RSA* محکی برای ارزیابی سایر الگوریتمها باقی مانده است؛ حضور و بقای نزدیک به سه*دهه از این الگوریتم، تضمینی در برابر ضعفهای عمده بشمار می*رود. تشکر یادتون نره:41:
  19. دیدم در مورد سرورهای ویندوز خیلی کم صحبت میشه !گفتم یه مطلب در مورد وب کانفیگ بزارم ! معرفی فایل Web.Config فایل web.config همانطور که از اسم آن پیداست یک فایل پیکربندی برای یک پروژه ASP.net میباشد .در هر پروژه ASP.net یک فایل web.config وجود دارد که امکان پیکربندی پروژه را فراهم میسازد . فایل web.config چیست؟ فایل web.config همانطور که از اسم آن پیداست یک فایل پیکربندی برای یک پروژه ASP.net میباشد .در هر پروژه ASP.net یک فایل web.config وجود دارد که امکان پیکربندی پروژه را فراهم میسازد . البته امکان اینکه چند فایل web.config در یک پروژه وجود داشته باشد نیست . در انتهای این مقاله بعد از معرفی کلی این فایل به طرز استفاده از چند فایل در یک پروژه ASP.net میپردازیم.فایل web.config یک فایل از نوع xml بوده و تمامی تگ های داخل این فایل دارای معنی بوده لازم به ذکر است که این فایل نسبت به کوچک و بزرگ بودن حروف حساس است . فایل machine.config چیست؟ همانطور که از یک فایل web.config برای پیکربندی یک پروژه ASP.net استفاده میشود از فایل machine.config برای پیکربندی پروژه های ASP.net که در یک کامپیوتر خاص اجرا میشوند استفاده میشود.بدین معنی که پیکربندی های که در یک فایل machine.config قرار دارد تمام پروژه های ASP.net که در آن کامپیوتر قرار دارند را تحت تاثیر قرار میدهد . معمولا فایل machine.config را تغییر نمیدهند و برای هر پروژه جداگانه و با استفاده از فایل های web.config پیکربندی را بطور جداگانه انجام میدهند. چه چیزی در فایل web.config قرار میگیرد؟ تعداد زیادی تنطیمات مهم هستند که در یک فایل web.config قرار میگیرند . در زیر به ذکر چهار مورد از مهمترین تنظیماتی که میتواند در یک فایل web.config میواند قرار بگیرد اکتفا میکنیم: ۱-Database Connections یکی از مهمترین چیزهائی که در یک فایل web.config قرار میگیرد اطلاعات مربوط به connection string میباشد. دلیل قرار دادن یک connection string در یک فایل web.config زمانی مشخص میشود که قرار باشد که جای database خود را تغییر دهیم . در این حالت فقط کافی است که اطلاعات مربوط به connection string را در فایل web.config تغییر دهیم در صورتیکه اگر اطلاعات مربوط به connection string را در خود application قرار دهیم برای تغییر database باید تعداد زیادی از فایل های موجود در پروژه را تغییر دهیم و این کار زمانگیری است و بعلاوه ویژگی قابل حمل بودن یک برنامه را فوق العاده پائین می آورد . البته من زیاد با قرار دادن اطلاعات مهمی چون connectionstring به صورت خام زیاد موافق نیستم . اگر از این روش استفاده میکنید من توصیه میکنم که اطلاعات مربوط به connection string را رمز کرده و مقدار رمز شده را در فایل web.config قرار دهید . البته لازم به ذکر است که در رمز کردن از Hashing استفاده نکنید دلیلش رو اگه نمیدونید برید و مقاله قبلی که در مورد hashing هست رو یه مطالعه ای بکنید.در مثال زیر نحوه قرار دادن اطلاعات مربوط به یک Connection string را میبینیم: appSettings> configuratrion> همانطور که دیدید قراردادن اطلاعات مربوط به connection string در یک فایل web.config بسیار آسان است connection string با استفاده از key که در اینجا ConnectionString میباشد مورد ارجاء قرار میگیرد و value مشخص کننده مقدار این key میباشد. دستیابی به این key ها در یک Application بسیار آسان است . برای دستیابی به key در یک application به شکل زیر عمل میکنیم: Using System.Configuration; String connection_string = ( string ) ConfigurationSettings.Appsettings[“ConnectionString”]; ۲-Session States Session در یک پروژه ASP.net بسیار مهم است . همانطور که میدانید پروتکل HTTP یک پروتکل StateLess میباشد به این معنی که بصورت اتوماتیک امکان تشخیص اینکه رشته ای از تقاضاها به سمت یک سایت همگی از سوی یک کامپیوتر صورت میگیرد یا اینکه یک مرورگر در حال مشاهده یک سایت هست یا نه وجود ندارد . برای رفع این دو مشکل فوق و در اصطلاح برای State نگه داشتن یک سایت از Session States استفاده میشود .ASP.net برای ذخیره کردن Session از روش های مختلفی استفاده میکند . به طور پیش فرض ASP.net ، session ها را در همان پردازش مربوط به سایت ذخیره سازی میکند .همچنین شما برای ذخیره سازی session ها علاوه بر روش پیش فرض میتوانید از دو روش زیر استفاده کنید . ناگفته نماند که مشخص کردن نحوه ذخیره سازی یک Session در فایل Web.config مشخص میشود.روش های ذخیره سازی را در زیر می بینید: ۱-Session State Server استفاده از این روش برای ذخیره سازی Session ها دارای دو سود مناسب است . اول اینکه به این دلیل که پروسس های مربوط به Session و Application یکی نیستند چنانچه Application به قول معروف Crash کند هیچ آسیبی متوجه Session ها نخواهد بود چون دو پردازش مجزا هستند . دومین سود این است که امکان اشتراک در میان یک کامپیوتر چند پردازنده میسر میباشد. برای مشخص کردن اینکه نحوه ذخیره سازی Session به صورت State Server باشد لازم است در فایل web.config تغییرات زیر را اعمال کنیم: در زیر توضیحی مختصر راجع به پارامترهای بالا را ذکر میکنم: Mode : درواقع حالت ذخیره سازی است که میتواند یکی از دو مقدار StateServer یا SqlServer باشد در اینجا چون میخواهیم از روش StateServer استفاده کنیم مقدار Mode را مساوی StateServer قرار میدهیم. stateConnectionString :connection string که از آن برای مشخص کردن موقعیت State Service استفاده میشود . sqlConnectionString :connection string مربوط به SqlServer میباشد که البته برای State Server لازم نیست ولی برای حالت SqlServer لازم است چون در این نوع از ذخیره سازی از SqlServer استفاده میشود. Cookieless : در صورت تمایل برای نگه داشتن مقدار Session در سمت Client بعد از قطع اتصال بین سایت و Client میتوان مقدار این گزینه را False کرد ولی من که این کار را مفید نمیبینم پس با True کردن این مقدار اجازه ذخیره شدن اطلاعات مربوط بهSession را ندهید . Timeout: در واقع این item طول عمر یک Session را بر حسب دقیقه بیان میکند . البته این تگ item های دیگری هم دارد که من توضیح نمیدم ولی حتما قبل از استفاده از Session ها یه نگاهی به این گزینه ها بکنید به طور مثال یکی از گزینه هائی که نگفتم در مورد رمز کردن اطلاعات داخل Sessionو نگه داشتن این اطلاعات در کامپیوتر Client میباشد. ۲-SqlServer انتخاب دوم برای ذخیره سازی Session ها SqlServer 2000 میباشد . برای ذخیرهسازی اطلاعات مربوط به یک Session با استفاده از SqlServer مراحل زیر را دنبال کنید: ۱- با استفاده از ابزا Query Analyser اسکریپت InstallSqlSate.sql را اجرا کرده تا DataBase مورد نیاز برای ذخیره سازی Session در SqlServer ایجاد شود . لازم به ذکر است که فایل InstallSqlState.sqlدر مسیر زیر است: systemroot\Microsoft.NET\Framework\versionNumber 2- در مرحله دوم لازم است تا تنظیمات لازم را به مانند آنچه در StateServer انجام دادیم ، انجام دهیم . برای این کار لازم است تا تغییرات زیر را در فایل web.config انجام دهیم: البته اطلاعات دیگر را به مانند آنچه در State Server دیدید قرار دهید. SqlServer امکان به اشتراک گذاشتن اطلاعات مربوط به یک Session را بین چند سایت یا حتی چند Server ممکن میسازد ولی تنها ایراد این روش در این است که SqlServer نسبت به Session State کندتر است و از این لحاظ بهتر است که از StateServer استفاده کنیم . ۳-Error Handling Error handling یکی از قسمت های خیلی مهم در هر پروژه تحت وب میباشد . امکان رخ دادن هر نوع Error وجود دارد بنابراین بایستی راهی را برای مقابله با این error ها در نظر بگیریم . ASP.net با استفاده از فایل Web.config به ما این امکان را میدهد که Error ها را کنترل کنیم . بطور مثال برای کنترل error 404 به شکل زیر عمل میکنیم : customErrors> چند خط کد فوق برای این است که در هنگام رخدادن error 404 که مربوط به یافت نشدن صفحه است بجای نمایش این error به صفحه notfound.asp برود . چنانچه Mode=””Off باشد در این صورت در هنگامی که یک Error رخ دهد همان error برای کاربران نهائی نمایش داده میشود . ۴-security(authentication) یکی از جنبه های مهم هر برنامه تحت وب امنیت آن است . ASP.net امکانات مناسبی را در زمینه امنیت ایجاد کرده است که میتوانیم بر حسب نیاز از این امکانات استفاده کنیم .یکی از امکاناتی که .net در زمینه امنیت ارائه داده است اعتبارسنجی کاربران است که از سه طریق این عمل ممکن میشود: ۱-Windows Authentcation Windows authentication به شما این امکان را میدهد تا از اکانت های کاربران در ویندوز استفاده کنید . این سرویس از IIS استفاده میکند . و بعد از اعتبارسنجی کاربران اطلاعات کاربری تائید شده را برای کد برنامه شما ارساال می کند . اگر شما مایل به این هستید که بدانید کدام کاربر ویندوز از برنامه های ASP.net استفاده میکند با استفاده از Property زیر میتوانید این اطلاعات را بدست آورید : User.Identify.Name; این Property کلمه کاربری(username) کاربر فعلی را در خود دارد . ۲-Passport Authentication این نوع از اعتبارسنجی کاربران برای اعتبارسنجی از سرویس Passport محصول شرکت Microsoft استفاده میکند . برای استفاده از این سرویس میبایستی این سرویس را خریداری کنید . ۳-Forms Authentication این نوع از اعتبارسنجی کاربران برای اعتبارسنجی از Form های Login که در بیشتر سایت ها میبینیم استفاده میکنند . این نوع از اعتبارسنجی به واقع بیشترین استفاده را در میان سه نوع اعتبار سنجی دارد .بارها شده در سایت هائی رفته و اجازه مشاهده یک سری از صفحات فقط در صورت Login کردن به شما داده میشود در واقع در چنین سایت هائی از Forms Authentication استفاده میشود . این مبحث بسیار گسترده است و نیاز به یک آموزش کامل در مورد اعتبار سنجی کاربران از طریق Forms Authentication وجود دارد ان شاء الله در آینده نزدیک در این مورد بیشتر صحبت خواهیم کرد در انتهای این قسمت قطعه کد لازم برای اعتبار سنجی کاربران به روش Forms authentication را میاوریم: authentication> authorization> استفاده از چند فایل web.config در یک برنامه ASP.net: امکان استفاده از چند فایل Web.config در یک برنامه ASP.net میسر میباشد . در واقع چنانچه در داخل یک شاخه از یک برنامه تحت وب یا به عبارت ساده تر یک سایت یک فایل web.config قرار دهیم شرایطی که در این فایل مشخص میشود بر مشخصات و شرایطی که در فایل web.config شاخه اصلی سایت است ارجعیت دارد و چنانچه پیکربندی در فایل web.config شاخه اصلی وجود داشته باشد که درآن فایل دوم نباشد این پیکربندی برای آن زیر شاخه نیز صادق است .در نتها لازم به ذکر است که محدوده دید یک فایل web.config در همان شاخه و تمام زیر شاجه هائی است که در آن شاخه که خود فایل قرار دارد میباشد .بنابراین شرایطی که در فایل web.config که در شاخه اصلی یک سایت قرار دارد برای تمام فایل ها و زیر شاخه های آن صادق است .
  20. كدگذاري (Encryption) : • به پروسه ي تبديل يك پيغام كاملا عادي (Plaintext) به داده هايي كه كاملا تغيير يافته و بدون معني (ciphertext) به نظر مي رسند ، گفته مي شود. رمزگشايي (decryption) : • به پروسه ي تبديل ciphertext به plaintext گفته مي شود. Cryptography • علم ايجاد ارتباطات امن در دنياي داده ها. Cryptanalysis • به روش هاي شكستن ciphertext گفته مي شود ( يعني بدست آوردن plaintext بدون دانستن كليد اصلي ). Cryptology • شاخه اي از رياضيات كه سروكارش با cryptography and cryptanalysis است. Cryptographic algorithm • كه به آن cipher هم گفته مي شود ، تابعي رياضي است كه انجام عمليات كدگذاري و برعكس را انجام مي دهد. الگوريتم هاي متقارن (Symmetric algorithms) • از يك كليد براي رمزگذاري و رمزگشايي استفاده مي كنند (در ادامه بعنوان Private Key Systems معرفي مي شوند). الگوريتم هاي نامتقارن (asymmetric algorithms) : • از يك جفت كليد براي كدگذاري و رمزگشايي استفاده مي كنند. اين دو كليد با روابط رياضي به هم مربوط مي شوند اما توليد يكي از ديگري بسيار مشكل است (در ادامه بعنوان Public Key Algorithms معرفي مي شوند). Block Ciphers • الگوريتم هاي كدگذاري اطلاعات كه بر روي قطعاتي از داده ها با طول 64-bit كار مي كنند ( مانند DES و RC2 ). Stream Ciphers • اين الگوريتم ها تنها يك بيت از داده ها را در هر لحظه كدگذاري مي كنند (مانند RC4). سيستم هاي كدگذاري بر مبناي روش هاي كليد خصوصي (Private Key Systems) : • مثالها: DES, AES, IDEA, RC5, RC6, Blowfish, Twofish • در اين سيستم ها يك كليد براي هر دو حالت كدگذاري و رمزگشايي بكار برده مي شود. • تنها با تكه هاي ثابتي از قطعات داده ها كار مي كنند (عموما 64 تا 256 بيت) ، بدين معنا كه داده ها بايد به قطعاتي با طول ثابت تبديل و سپس كدگذاري شوند. در اين حالت عموما طول خروجي با طول ورودي يكسان است. • در اين روش ها از ابزارهايي مانند : عمليات جبري (جمع و ضرب و غيره) ، عمليات بيتي (XOR ، چرخش و غيره ) و table lookups (sBoxes) ، براي اختلاط كليد و داده ها استفاده مي كنند. • در اين روش ها تنها با تغيير يك بيت از داده ها و يا كليد ، بيت هاي خروجي تا 50 تغيير خواهند كرد. حملات گزارش شده به سيستم هاي كدگذاري بر مبناي كليد خصوصي : • Brute force : امتحان كردن تك تك كليدهاي ممكن. • اگر اختلاط داده ها با كليد به اندازه ي كافي پيچيده و يا كامل نباشد ، الگوريتم بكار گرفته شده ممكن است سبب درز اطلاعاتي درباره ي كليد شود و اين حالت باعث مي شود كه بتوان حدس هاي دقيق تري را براي روش Brute force زد. مزاياي الگوريتم هاي كدگذاري بر مبناي كليد خصوصي : • بسيار سريع هستند (تنها به 20 clock cycles/byte or less براي انجام محاسبات نيازمند هستند). • كليدهايي با طول كوچك براي حفظ امنيت آنها كافي هستند. براي مثال كليدهايي با طول 128 bits تا 100 سال آينده مطمئن هستند (تنها روش quantum cryptography مي تواند آنرا بشكند) و كليدهايي با طول 256 bits حتي در برابر quantum cryptography نيز مقاوم هستند. سيستم هاي كدگذاري اطلاعات بر مبناي روش هاي كليد عمومي (Public Key Algorithms) : • مثالها : RSA, Elliptic Curve, Diffie-Helman • در اينگونه روش ها كليدها با صورت يك جفت ارائه مي شوند. اطلاعاتي كه با يك كليد كد گذاري شده است تنها با جفت كليد ديگر قابل رمزگشايي است و برعكس. (اين دو كليد با روابط رياضي به هم وابسته و مربوط هستند) • اين روشها به شما اجازه مي دهند تا يك كليد را آزادانه منتشر كنيد (the "public" key) و كليد ديگر را نزد خود محفوظ نگه داريد. ( اين كليد مخفي عموما در كارتهاي هوشمند و يا وب سرورها و .... ذخيره مي شود ). • در اين روش ها هر كسي مي تواند اطلاعات را با كليد عمومي منتشر شده كدگذاري نمايد اما تنها شما هستيد كه مي توانيد با استفاده از كليد خصوصي خود ، اين داده ها را رمزگشايي نماييد. • بر عكس ، شما مي توانيد پيغامي را با كليد مخفي خود كدگذاري نماييد و سپس همگاني كه دسترسي به كليد عمومي دارند ، آنرا رمزگشايي كنند. مثالي از يك سيستم گذاري با كليد عمومي : RSA • دو عدد اول بزرگ مانند p و q را پيدا نموده و سپس r = p * q را محاسبه نماييد. • عدد اتفاقي مانند x را انتخاب كرده و سپس y ايي را بيابيد كه به ازاي تمام m هاي كوچكتر از r داشته باشيم : m^xy % r = m • اينكار با دانستن p و q ساده مي باشد اما تنها با دانستن r بسيار مشكل است و همچنين تجزيه ي r به p و q نيز بسيار مشكل است. • p و q را فراموش كنيد. كليد عمومي x و r خواهد بود و كليد خصوصي y مي باشد. • براي كدگذاري اطلاعات با كليد عمومي ، تمام اطلاعات به قطعاتي بيتي با اندازه ي كوچكتر از r شكسته مي شوند. • فرستنده تنها كافي است e = m^x % r را محاسبه نمايد . در اينجا e قطعه ي گذاري شده است. • براي رمزگشايي اين قطعه تنها كافي است e^y % r = m محاسبه شود. • به همين ترتيب داده ي كدگذاري شده با كليد خصوصي (f = m^y % r) را مي توان با كليد عمومي رمزگشايي كرد (f^x % r = m) . • بايد به خاطر داشت : m^xx != m . بنابراين داده هاي گذاري شده با كليد عمومي را نمي توان با همان كليد عمومي رمزگشايي كرد. حملات گزارش شده به سيستم هاي كدگذاري با كليد عمومي : • براي شكستن RSA تنها كافي است كه r به p و q تجزيه شود. تجزيه كردن اعداد بسيار سريعتر از روش brute force است. سختي تجزيه ي يك عدد 512-bit به اندازه ي محاسبه ي 2^64 حالت مختلف كدها در سيستم كدگذاري با كليد خصوصي (روش brute force) است. • هر چقدر روش هاي سريعتري براي تجزيه ي اعداد ميسر شود ، شكستن RSA نيز به همان نسبت ساده تر خواهد شد. هش كردن اطلاعات (Hashing) : • مثالها : MD2, MD5, SHA • checksum (مجموع مقابله اي(!)) يك پيغام را توليد مي كنند. • همانند روش هاي كدگذاري بر مبناي كليد خصوصي از عمليات جبري و بيتي پيچيده اي براي تركيب بيت ها و توليد خروجي استفاده مي كنند. • به اين الگوريتم ها message digest, fingerprint or compression function نيز گفته مي شود. • اين الگوريتم ها يك طرفه هستند و عمدا طوري طراحي شده اند كه مهندسي معكوس آنها تقريبا غيرممكن باشد. موارد استفاده از الگوريتم هاي Hash : • توليد امضاي ديجيتال پيغام ها كه همراه با سيستم هاي كدگذاري كليد عمومي بكار گرفته مي شود. در اين حالت ، پيغام هش شده و سپس اين هش با كليد خصوصي رمزگذاري مي شود. سپس هر كسي كه كليد عمومي را داشته باشد بايد دو كار را انجام دهد تا از اين كه پيغام رسيده پيغام شما مي باشد و يا اينكه تغيير داده شده است ، اطمينان حاصل نمايد : 1- هش فرستاده شده را رمزگشايي كند ( با كليد عمومي ). 2- با استفاده از كليد عمومي ، مقدار هش پيغام را محاسبه كند. اين دو را با هم مقايسه نمايد. • الگوريتم هاي كدگذاري با كليدهاي عمومي عموما كند مي باشند( عموما هزار بار كندتر از سيستم هاي كدگذاري با كليد خصوصي ). بنابراين تركيب الگوريتم هاي هش كردن اطلاعات با اين روشها بسيار ايده آل هستند زيرا نياز به كدگذاري كل پيغام را با كليد خصوصي منتفي مي كنند. تنها كافي است كه مقدار هش شده ي كل اطلاعات را در اين ميان به بازي گرفت. • ايجاد يك مقدار با طول ثابت از منبعي از داده ها با طول بسيار زياد. ( لازم به ذكر است كه هش توليد شده منحصر بفرد است. براي مثال اگر كلمه ي Vahid را با الگوريتم MD5 هش كنيم حاصل E5EDE944EBEE46D553DFE88EAB5168CE خواهد شدو يا با استفاده از الگوريتم SHA1 خروجي C6014B4E1596B58399DEEB1B25317FA7A7B29A6D مي باشد. هيچ داده ي ديگري را نمي توان هش كرد كه اين خروجي را توليد كند). • براي بالاتر بردن امنيت ديتابيس حاوي پسوردهاي كاربران بكار گرفته مي شوند. حملات گزارش شده در مورد الگوريتم هاي hashing : • تصادم (Collisions) ، يافتن دو منبع اطلاعات كه يك hash را توليد كنند. • درز اطلاعاتي در مورد منبع داده ها ( آيا مي توان از مقدار هش ، اطلاعاتي را در مورد منبع آن حدس زد؟! )
  21. سلام به دیتابیس برو و مقدار password ادمین سایت 8d0d7bd5bdedb494057128da21824503:36ghsATyqtxUph6I9uFOMLJZYuEmnlIe بزار و سیو کن بعد در جومیلا بده 123456 و برو تو . اگه حل نشد بگو با تشکر بای
  22. خوب این پلاگین کاری برای من باید انجام بده اونم اینه که فقط بکاپ بگیره و من هکر بعد از تمام شدن کارم پاکش میکنم تا ردی از من نباشه .
  23. من قالب JA Sanidine II v1.0 for Joomla 1.5 میخوام تو جوملا 1.7.3 استفاده کنم میشه این موردو برام اوک کنین :1:
  24. این قالبرو بشین از صفر بنویسم حال همرو بگیرم مرسی ممنون
  25. سلام اضافه کردن یک بخش جهت ایرورها و خطاهای جوملارو اونجا بگیم و دسه بندی کنیم مثل ایرور زیر در کمپاین k2 Warning: Invalid argument supplied for foreach() in ...\administrator\modules\mod_k2_stats\tmpl\default.php on line 37