PDA

View Full Version : سناریو اعتبارسنجی



Metal Gear Solid
جمعه 02 اردیبهشت 1390, 12:43 عصر
سلام

از کاربران میخوام هر اطلاعاتی از اعتبارسنجی و کاراکترهای غیر مجاز و غیره دارن اینجا بگن. من خودم از توابع PHP استفاده میکنم اما نمیدونم جای درستش کجاست. به عنوان مثال استفاده از htmlentities برای جلوگیری از کاراکترهای HTML به کار میره اما با این تابع کاراکترهای فارسی هم تمامی به کدهای اسکی ( فکر کنم ) تبدیل میشند.

تابع Addslashes برای ' و " استفاده میشه که در صورت استفاده ظاهر ورودی کاربر به هم میریزه. تصور کنید شاید شخصی بخواد اسم فیلم یا هر چیز دیگه ای رو در تکستی وارد کنه که شامل کاراکتر ' هست و اصلاً قصدش تخریب و یا هک نباشه. در خروجی یک اسلش مسخره هم به متنش اضافه میشه!!!

اگر از تابع Strip_Tags استفاده کنیم تگ ها رو حذف میکنه اما باز هم میشه کدهای جاوااسکریپت اجرا بشن که در این صورت باز هم امنیت پایینه.

اگر از تمامی این توابع با هم استفاده کنم امکان استفاده از کاراکترهای فارسی رو ندارم. و در مواقعی که بخوام مثل بخش کد همین ادیتور سایت تگ های HTML رو هم نشون بده یا کدهای PHP باز هم امکانش نیست و تمامی تگ ها به کدهاشون تغییر میکنن.
فکر کنم تنها راه استفاده Regular Expression باشه که من هیچی بلد نیستم و با مثالهای ساده که توی برخی آموزش ها هست هم به هیچ جایی نمیشه رسید... .

کسی میتونه راهنمایی کنه راه خلاصی از این مشکلات چیه!
ممنون.

Metal Gear Solid
جمعه 02 اردیبهشت 1390, 13:38 عصر
سوال دوم که خیلی دیدم توی این سایت و جاهای دیگه. کاربرا اومدن و برای شناسایی کدهای x00..x1f کلی کد نوشتن. استفاده Str_replace یا preg_replace . سوال اینه استفاده از ctype_ctlr چه فرقی با این داره؟ این تابع هم تمامی کاراکترهای کنترلی رو میشناسه. یا در کل استفاده از توابع Ctype که شامل چاپ شدنی و یا نشدنی و باقی موارد میشه.
آیا توابع Ctype دارای باگ هستند که جایی استفاده نمیشن؟

eshpilen
جمعه 02 اردیبهشت 1390, 19:52 عصر
چیه چی شده؟ :متعجب:

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

Metal Gear Solid
شنبه 03 اردیبهشت 1390, 12:08 عصر
نه الان مشکلی نیست من بعد از زدن این تاپیک به تاپیک هایی که خود شما زده بودید مراجعه کردن و کلی اطلاعات مفید کسب کردم. دست شما درد نکنه.
فقط سوالی که در ذهن منه اینه که من عملاً باید دو تابع یا متد کلاس برای دو نوع کلی از فیلدهای متنی برای اعتبارسنجی داشته باشم.
1- ارسالها یا توضیحات یا کامنت ها ( که میتونن حاوی کاراکترهای خط جدید یا این جور چیزا باشن. )
2- فیلدهای نام کاربری، رمزعبور، یا هر چیزی که توضیحات نباشه و کاراکترهایی مثل , ; ' " اینارو در قبول نکنند!

من به این صورت نوشتم که در حالت اول هیچ کاراکتری رو محدود نکردم
اما در حالت دوم کلی از کاراکترها رو محدود کردم به عنوان مثال کاراکترهای اسکی 0 تا 31 رو!
در واقع دو متد برای کلاس اعتبار سنجی خودم تعریف کردم... .
این حرکت من درسته ؟

Metal Gear Solid
شنبه 03 اردیبهشت 1390, 12:37 عصر
سوال دیگه ای که داشتم و ربطی به موارد بالا نداره.
دلیل اینکه گاهی اوقات با استفاده از دستور header عملیات no-cache رو انجام میدیم چیه؟ چرا نباید محتویات صفحه کش بشه!؟

i-php-i
شنبه 03 اردیبهشت 1390, 13:37 عصر
شما باید سرچ کنید و بسته به نیازتون یه از توابعی که نوشتید استفاده کنید.

hosseintdk775
شنبه 03 اردیبهشت 1390, 18:47 عصر
سوال دیگه ای که داشتم و ربطی به موارد بالا نداره.
دلیل اینکه گاهی اوقات با استفاده از دستور header عملیات no-cache رو انجام میدیم چیه؟ چرا نباید محتویات صفحه کش بشه!؟
بسم الله الرحمن الرحیم
سلام
در مورد کش / اینجا مطلب جالبی هست / بخونش:
http://blogs.sitepoint.com/caching-php-performance/

eshpilen
شنبه 03 اردیبهشت 1390, 19:13 عصر
سوال دیگه ای که داشتم و ربطی به موارد بالا نداره.
دلیل اینکه گاهی اوقات با استفاده از دستور header عملیات no-cache رو انجام میدیم چیه؟ چرا نباید محتویات صفحه کش بشه!؟
خب کش میشه یعنی شما صفحه رو رفرش میکنی ممکنه همون صفحهء قبلی کش شده رو مشاهده بکنی، درحالیکه محتویات واقعی صفحه عوض شده.
این مسئله ابتدا در توسعه و تست منو اذیت کرد و تعجب کرده بودم که چرا هرچی کد رو تغییر میدم خروجی صفحه تغییری نمیکنه!!

Metal Gear Solid
دوشنبه 05 اردیبهشت 1390, 00:14 صبح
آیا این مسئله ی کش کردن یا نکردن به امنیت سایت هم مربوط میشه؟ یعنی میشه گفت برای امنیت بالاتر سایتمون بهتره از کش کردن اطلاعات جلوگیری کنیم؟