PDA

View Full Version : سوال: چند سوال راجع به امنیت



reza1988
یک شنبه 13 بهمن 1387, 18:14 عصر
سوال اول
به این سوال اولیه خیلی احتیاج دارم اگه نخواستید جواب بقیه سوال ها را بدبد عیب نداره ، ولی ممنون می شم اگه جواب سوال اولی را بدید .

دوستان من یه جا چند وقت پیشا یه چیزی راجع به امنیت فرم های login خوندم ، که البته مطلبش را دقیقا یادم نی یاد . ولی تا اونجا که یادمه در آن گفته شده بود که هکره میتواندد با یک سری کاکترهای خاص به کمک and و or , ... ، بدون نام کاربری و پسورد وارد بخش مدیریتی سایت شوند .
تو اون مقاله نوشته شده بود که باید از وارد کردن و دریافت بعضی از کاراکتر های خاص مانند / ، * ، space و یه سری کاراکترهای دیگه که من یادم نمیاد جلوگیری کینیم .
اون موقع که این مطلب را خوندم از php تقریبا هیچی بلد نبودم و به خاطر همین چیز زیادی از اون مقاله یادم نمیاد .(البته هنوزم تازه کارم . :لبخند:)
خوب من الان می تونم بعضی از کاراکترها را از اول وابتدای رشته ارسالی توسط تابع trim حذف کنم .
ولی مثلا اگه بخوام بعضی از کاراکترهارا نظیر فاصله ، _ ، * T، / و ... را از یه جای نامشخص در وسط رشته حذف کنم باید چی کار کنم ؟ :متفکر:



سوال دوم
1) با تابع md5 برای رمز گذاری غیرقابل بازگشت استفاده می شه ، و تا اونجا که اگه اشتباه نکنم برای این ازش استفاده می کنن که اگه مثلا یه هکر در وسط راه اطلاعاتی، پسورد رمز شده توسط این تابع را سرقت کرد ، نتونه ازش استفاده کنه .
خوب این تابع که برای رمز نگاری غیر قابل بازگشت است یعنی وقتی وقتی مثلا پسوردو رمز و ارسال می کنیم باید با رمز شده اون در بانک اطلاعاتی مقایسه بشه دیگه ، یعنی به عبارتی رمز شده پسورد باید در بانک ذخیره شده باشد ، چون که ما نمی تونیم اون پسورد را از رمز خارج کنیم . تا ببینیم یک است یا نه ؟ خوب پس هکر اگه پسورد رمز شده رو هم بدست بیاره باهاش می تونه کار خودش را انجام بده .
نمی دونم منظورم را خوب بیان کردم یا نه . اگه منظورم را فهمیدید ممنون می شم جوابم را بدید .
2 ) فکر کنم علت این که این سوال یعنی سوال دوم من ، برای من پیش آمده اینه که من کاربرد و جای استفاده ،توابع رمزگذاری قابل بازگشت مثل :base64_encode ، و توابع رمز گذاری غیر قابل یازگشت مثل md5 را نمی دونم ، پس ممنون می شم راجع به کاربرد آن ها و جای استفاده هر کدام از آن ها توضیح بدید .

3 ) تا اونجا که من امتحان کردم تابع MD5 هر کاراکتر را مثلا عدد 2 را همیشه به یه چیز رمز می کنه ، خوب این جوری که راحت رمز کذاری می شه ، پس به چه دردی می خوره ؟

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


با تشکر :لبخندساده:

sama01
یک شنبه 13 بهمن 1387, 19:51 عصر
در مورد سوال اول‌تان، یک بخش (and و or ...) مربوط به sql injection‌ می‌شه. همین عبارت را جستجو کنید مطالبی خوبی در همین فروم یافت می‌شود.
سایر موارد هم بحث شده. دوستان توابعی را پیشنهاد داده‌اند که به کمک آن‌ها می‌توان رشته‌های وارد شده را تمیز کرد. تاپیک‌های با موضوع امنیت جستجو کنید.

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

پس هکر اگه پسورد رمز شده رو هم بدست بیاره باهاش می تونه کار خودش را انجام بده .
این‌طور نیست. شما چیزی را که وارد می‌شود را رمز می‌کنید و با پسورد رمز شده سایت مقایسه می‌کنید. اگر هکر مقدار رمز شده را وارد کند، این مقدار، دوباره رمز می‌شود و تبدیل به چیز دیگری می‌شود.
پس چنین اتفاقی رخ نمی‌دهد.

تا اونجا که من امتحان کردم تابع MD5 هر کاراکتر را مثلا عدد 2 را همیشه به یه چیز رمز می کنه ، خوب این جوری که راحت رمز کذاری می شه ، پس به چه دردی می خوره ؟
بله. به همین کار، برخی ادعا می‌کنند که می‌توانند عبارتی را که با متد MD5 رمز شده را برگردانند. روش آن‌ها هم همین است که یک بانک از مقادیر رمز شده دارند.
کاری که می‌شود کرد این است که نباید عبارات تابلو را استفاده کرد. و همچنین می‌تواند عبارات دیگری را برای غیر قابل شناسایی شدن به متن اصلی اضافه کرد.

فکر می‌کنم اگر در فروم می‌گشتید، جواب تمام سوالات‌تان را بدون ایجاد تاپیک جدید می‌گرفتید.
لطفا جستجو کنید. لطفا.

reza1988
یک شنبه 13 بهمن 1387, 22:02 عصر
sama01 ضمن تشکر از پاسخ شما (خصوصا پاسخ به سوال دوم که پاسخی کامل بود .)


دوستان توابعی را پیشنهاد داده‌اند که به کمک آن‌ها می‌توان رشته‌های وارد شده را تمیز کرد. تاپیک‌های با موضوع امنیت جستجو کنید.

خوب من که اسم اون توابع را بلد نیستم ، چه طور سرچ کنم ، چی را سرچ کنم ؟ لطفا و خواهشا اگه بلدید توضیح کامل بدید . همانطور که گفتم ، فقط trim را میدونم چنین کاری میکنه ، که اونم فقط از ابتدا و انتهای رشته بعضی از کاراکترهای خاص را حذف می کند . ولی من می خوام از وسط رشته هم بشود این کار را کرد .
به این سوال اولیه اگه میشه کامل توضیح که همانطور که گفتم خیلی بهش نیاز دارم .


اما راجع به سوال دوم :
من تا به حال با توابع رمز نگاری کار نکردم ولی حال اگه ، فرمی که جعبه متنی برای وارد کردن نام کاربری ، و فیلد رمز عبور برای وارد کردن پسورد در آن قرار دارد در یک صفحه html باشد، و من نام کاربری و پسورد را بعد از دریافت در اسکریپت php ، و قبل از ارسال به دیگر اسکریپت های php که در آن ها نیز به نام کاربری و پسورد نیاز دارم با md5 رمز کنم ، باز قبل از رسیدن به اسکریپت PHP ، و در بین راه ممکنه اطلاعات سرقت بشوند . لذا آیا باید اطلاعات را در همان صفحه HTML و قیل از ارسال رمز کرد ، در این صورت که با PHP در یک صفحه HTML که نمی شود این کار ار کرد ؟ آیا باید با زبان هایی مثل جاوا اسکریپت ، اطلاعات را قبل از ارسال در همان صفحه html رمز کرد و سپس اطلاعات را ارسال نمود . (البته من کلنگ یادگیری جاوا اسکریپت را نیز تازه به زمین زدم ، و اصلا نمی دونم با اون نیز می شه چنین کاری کرد و تابع رمزنگاری md5 در جاوا اسکریپت نیز در دسترس است .)

sama01
یک شنبه 13 بهمن 1387, 22:48 عصر
در مورد رمزنگاری سمت کاربر بله باید از javascript استفاده کنید. ولی خود javascript تابعی برای این کار نداره. باید تابعی برای این کار بسازید. باید در اینترنت موجود باشد.

در مورد توابع، به این تاپیک‌ها سر بزنید:
- توابع کاربردی مفید (http://barnamenevis.org/forum/showpost.php?p=648872)
- Refer validation و Request filtration (http://barnamenevis.org/forum/showpost.php?p=646273)
- توابع معتبر سازی(Validation) بسیار مفید! (http://barnamenevis.org/forum/showpost.php?p=627287)