PDA

View Full Version : امنیت ورودی ها



933E3B
سه شنبه 29 دی 1394, 12:08 عصر
سلام خدمت دوستان
قبل از هرچیز بگم که این سوال تکراری نیست خواهشا مدیران حذف نکنن.
دارم یه سایت شخصی طراحی می کنم که من برای ورود کاربران فقط از سشن استفاده کردم و حتی از کوکی هم استفاده نکردم.
1- خواهش می کنم اگر کسی از دوستان که وقت داره بگه چیکار کنم که صفحه ورودم امن باشه(بی زحمت کد برام بنویسه)؟
2- همچنین برای قسمت هایی مانند ثبت نام،ارسال درخواست و ... چطور سایت رو امن کنم؟
خواهشا در مورد سوال اول یه سری کد بهم بگید که تا حد قابل قبولی امنیت سایت رو بالا ببرن.
در مورد سوال دوم توضیح هم بدید کافیه کد هم نوشتید چه بهتر.
با تشکر

sina365
دوشنبه 05 بهمن 1394, 12:06 عصر
سلام.
من یه تکه کد دارم که از بس دوسش دارم واقعا زورم اومد بنویسم و میخواستم صفحه رو ببندم.اما یه دوستی الآن بهم گفت تو یادادان بخیل نباش!!
من تو زمینه ی امنیت خیلی ماهر نیستم اما همون یکم تجربه ی درویشی ام بهم میگه این کد خوبه:

$note=filter_var(trim(stripslashes(htmlspecialchar s($_POST['note']))), FILTER_SANITIZE_STRING);
در واقع کاری که این کد می کنه اینه که هرچه کاربر وارد کرد را دقیقا همون جوری نشونت میده.
یعنی مثلا حتی اگه کد های اچ تی ام ال،پی اچ پی جاوا اسکریپت و.... وارد کرد ، قشنگ همونجوری نشونت میده.من خودم خیلی ازش راضی ام.اما همون طور که گفتم شاید نکات امنیتی هم باشه که من بلد نباشم.
بعد ازاینکه ورودی از فیلتر بالا عبور کرد،یه نکته می مونه.این هم اینکه اینتر ها در زبان اچ تی ام ال باید حتما بصورت <br/> باشن تا نمایش داده بشن.
پس دستور زیر رو هم باید اضافه کنی.

$search = array ("\r\n");
$replace = array ("\n<br/>");
$note = str_replace($search, $replace, $note);
هم بریک می خوره وهم اینتر(اینتر در مرورگر نشون داده نمی شه،اما وقتی می خوای سورس صفحه رو بخونی خیلی تمیز تر میشه.)

تا اینجا برای این بود که متغیر را تمیز بگیری ونشون بدی.
*************
اگر میخوای این متن رو در دیتابیس ذخیره کنی،قبل از اینکه وارد دیتابیس بشه باید دوباره از یه فیلتر دیگه رد کنه که برای دیتابیس هم خطرناک نباشه.

$note=mysql_real_escape_string($note);
البته اینجوری ممکنه(شاید) یکم اسلش به متن اضافه کنه.
که من چون خودم احتیاج به دیتابیس نداشتم از این کد آخری استفاده نکردم.
فکر می کنم برای اینکه مشکل اسلش ها هم حل بشه،بعد از اینکه دوباره از دیتابیس اون ها رو خوندی باید کد زیر رو استفاده کنی.

$note=stripslashes($note);
من خودم تا حالا این کد هارا برای دیتا بیس تست نکردم.نمی دونم روش هایی که براش گفتم چه اتفاقی می افته ویا از امنیت کم می شه یانه.
شاید هم اصلا برای وارد کردن ورودی به دیتابیس، با وجود فیلتر های قبلی نیازی به این کد نباشه.به هر حال هرچه می دونستم گفتم.بایه نفر دیگه درباره ی این قسمت دوم صحبت کن.
موفق باشید.

sina365
دوشنبه 05 بهمن 1394, 12:11 عصر
سلام.
برای صفحه ی ورود هم باید از تصویر چالشی استفاده کنی که درخواست های ساختگی والکی از طرف ربات ها ارسال نشه.اما چون بحثش طولانیه،این مورد رو با یه سرچ تو گوگل می تونید پیدا کنید.
موفق باشید

m.valizadeh
سه شنبه 20 بهمن 1394, 20:27 عصر
با سلام

برای پیدا کردن نقاط ضعف یک برنامه و وب سایت مربوطه لازم است با راهکارها و ابزارهای تست امنیت آشنایی داشته باشید. برای شروع توصیه می شود نگاهی به وب سایت زیر بیندازید چون اطلاعات مفیدی در این زمینه ارائه می دهد

http://www.MohandesPishegan.com/solution/quality-programming/safe-programming (http://www.MohandesPishegan.com/solution/quality-programming/safe-programming)
http://www.mohandespishegan.com/solution/test-type/security-test (http://www.mohandespishegan.com/solution/test-type/security-test)
http://www.mohandespishegan.com/tools/security-test/black-box/acunetix (http://www.mohandespishegan.com/tools/security-test/black-box/acunetix)

با تشکر