• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
سیاست امنیتی برای المانهای داخل فرم
#1
با سلام
دوستان یه بحثی بدجوری رو مخم هست

فرض کنید ما یک فرم داریم که شامل چند تکس باکس و چند کمبوباکس هست

زمانی که صفحه لود میشه کمبوباکس ها از سمت سرور پر میشن و دیتا میگیرن ، این دیتا هم از جداول دیتابیس مربوطه خونده میشه و مهم هستن

تکس باکس ها که مقداری رو از کاربر میگیره و بحثی نداره ولی واسه کمبوباکس ها چکار میشه کرد

مثلا دیتای کمبوباکس زیر از جدول کالا خونده میشه و مقدار value در واقع کد id هر محصول (کالا) هست
کد:
<select name="codekala" id="codekala">
<option value="1">kala1</option>
<option value="2">kala2</option>
<option value="3">kala3</option>
<option value="4">kala4</option>
</select>

از نظر امنیت این شیوه فکر کنم خیلی مشکل داره

چون هم کاربر به راحتی میتونه از سیاست کار خبردار بشه و کد کالا ها رو به راحتی تشخیص بده
همین اینکه به راحتی میتونه کد کالاها رو تغییر بده و کالایی رو که اصلا در لیست نیست با توجه به شناخت کد کالا از قبل اونو ایجاد کنه
یا یک کد کالا که اصلا در دیتابیس وجود نداره رو ایجاد کنه

اینایی که گفتم منظمورم سمت کاربر هست با استفاده از راست کلیک و گزینه inspect element هست

بنظرتون ایده ای اصولی برای همچین پیاده سازیهایی به چه صورت هست ؟؟؟؟
  پاسخ
تشکر شده توسط :
#2
بحث اعتبارسنجی به همین موضوع برمیگرده دیگه که شما صرفا اعتماد نکنی به فرمی که طراحی کردی و داده هایی که دریافت میکنی رو اعتبار سنجی کنی که آیا همچین چیزی اصلا وجود داره یا نه بطور مثال.Blush
بنده طعم ايمان را نمي چشد، تا اينكه دريابد آنچه اتفاق نيفتاده است نمي شد كه اتفاق بيفتد؛و آنچه شده و اتفاق افتاده است,نمي شد كه نشود و اتفاق نيفتد....حضرت علي(ع)
  پاسخ
تشکر شده توسط :
#3
ببنید آره اعتبارسنجی وجود داره ولی اعتبارسنجی فقط میاد پارامترهای ارسالی تمیز میکنه

فقط میتونه تعیین کنه که پارامتر ارسالی عدد هست یا خیر
یا ایمیل معتبر هست یا خیر و .....

ولی اگر کاربر بیاد و یک کد عددی ارسال کنه که اصلا جزو کد کالاهای در دیتابیس نیست چی میشه !!!
انوقت اعتبارسنجی بهش گیر نمیده چون پارامتر واقعا عدد هست و از نظر validate بودن مشکلی نداره


منطق خیلی از سایت ها رو دیدم که فیلدهای این چنینی را hidden و value اون را بصورت کد درمیارن ، بنظرتون این ایده کارساز هست ؟؟؟
  پاسخ
تشکر شده توسط :
#4
(۱۳۹۵ تير ۲۰, ۰۷:۵۶ ق.ظ)ImanAzadi نوشته: ببنید آره اعتبارسنجی وجود داره ولی اعتبارسنجی فقط میاد پارامترهای ارسالی تمیز میکنه

فقط میتونه تعیین کنه که پارامتر ارسالی عدد هست یا خیر
یا ایمیل معتبر هست یا خیر و .....

ولی اگر کاربر بیاد و یک کد عددی ارسال کنه که اصلا جزو کد کالاهای در دیتابیس نیست چی میشه !!!
انوقت اعتبارسنجی بهش گیر نمیده چون پارامتر واقعا عدد هست و از نظر validate بودن مشکلی نداره


منطق خیلی از سایت ها رو دیدم که فیلدهای این چنینی را hidden و value اون را بصورت کد درمیارن ، بنظرتون این ایده کارساز هست ؟؟؟

خوب شما زمانی که داری اطلاعات کاربر رو چک میکنی یه بررسی هم بکن که کد کالایی که داره وارد میکنه اصلا تو جدولت هست یا نه ... اعتبار سنجی یه کلمه کلی هستش شما هر چیزی رو میتونی کنترل کنی ...
یه کار دیگه هم میتونی انجام بدی برای محکم کاری که تو برخی از روش ها جواب نمیده اما یه مقدار امن میکنه (البته اگه دوستان نظری دارن بگن حتما ) اونم اینکه تو فرمت Seesion_id رو بگیری و پاس بدی صفحه بعد اگه با صفحه دوم یکی بود حالا اعتبار سنجی فرمت رو شروع کنی ...
  پاسخ
تشکر شده توسط :
#5
نقل قول:خوب شما زمانی که داری اطلاعات کاربر رو چک میکنی یه بررسی هم بکن که کد کالایی که داره وارد میکنه اصلا تو جدولت هست یا نه

من کجا صحبت از چک کردن اطلاعات کاربر کردم ؟؟!!!

بعد گفتم پست اول فقط واسه اینکه منظورم رو برسونم مثال زدم
فرم اصلی چندین کمبوباکس داره که هر کدوم رو از یک جدول میخونه برای چک کردن هر کدوم هم باید یه کوئری یزنم مقادیر جدول هاشو بخونم بعد با مقدار ارسالی چک کنم که این مستلزم کد نویسی زیاد هست

نقل قول:اعتبار سنجی یه کلمه کلی هستش شما هر چیزی رو میتونی کنترل کنی ...

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

یه بحث داریم به نام اعتبارسنجی (validation) یه بحث داریم data verification که صحت ورودی ها رو با دیتابیس چک میکنه

نقل قول:یه کار دیگه هم میتونی انجام بدی برای محکم کاری که تو برخی از روش ها جواب نمیده اما یه مقدار امن میکنه (البته اگه دوستان نظری دارن بگن حتما ) اونم اینکه تو فرمت Seesion_id رو بگیری و پاس بدی صفحه بعد اگه با صفحه دوم یکی بود حالا اعتبار سنجی فرمت رو شروع کنی ...

منظورتون پاس بدیم صفحه بعد چیه ؟؟؟ ما اینجا فقط یک فرم داریم و بعد مقادیر واسه سرور ارسال میشه
به هر حال نفهمیدم منظورت چی بود
ولی این چیزی هم که شما میگید خودش مشکل داره چون اکثرا برای مباحث امنیتی بعد از لود صفحه session_id رو دوباره ایجاد میکنن => session_regenerate_id


Dodgy
  پاسخ
تشکر شده توسط :
#6
بهرحال شما باید چک کنین که آیا داده ورودی معتبر هست و توی دیتابیستون وجود داره یا نه. روی روش چک کردنش باید فکر کنین. ولی وقتی چک نکنین چه جوری اصلا تشخیص میدین که این محصول رو دارین توی سایت ؟ حتی با فرض اینکه کاربر اطلاعات رو تغییر نده.
بنده طعم ايمان را نمي چشد، تا اينكه دريابد آنچه اتفاق نيفتاده است نمي شد كه اتفاق بيفتد؛و آنچه شده و اتفاق افتاده است,نمي شد كه نشود و اتفاق نيفتد....حضرت علي(ع)
  پاسخ
تشکر شده توسط :
#7
نقل قول:مثلا دیتای کمبوباکس زیر از جدول کالا خونده میشه و مقدار value در واقع کد id هر محصول (کالا) هست
خب اینکار که ای دی رو از دیتابیس بخونیم برای مراحل بعدی امری طبیعی هست حالا شما فقط یک را داری سمت کاربر که وقتی inspect element رو کاربر زد نتونه ای دی مورد نظر رو ببینه
کد کردن مقدار ای دی هست تا کاربر نتونه ببینه برای این کار هم اگه زیاد روی این مسئله حساس هستید از یه چیز قوی استفاده کنید
از اونطرف هم وقتی ای دی رو ارسال کردید اول دکد کنید بعد از دیتابیس آمار بگیرید که این ای دی درست هست یانه و ...
سمت کاربر غیر این راهی نداری فک کنم
  پاسخ
تشکر شده توسط :
#8
نقل قول:دوست عزیز فکر کنم خودت یکم مطالعه کنی بد نیست بحث اعتبارسنجی فقط واسه تمیز کردن ورودی هاست که مثلا ورودی خالی نباشه یا عدد صحیح باشه یا ایمیل وارد شده فرمتش صحیح باشه و ....

یه بحث داریم به نام اعتبارسنجی (validation) یه بحث داریم data verification که صحت ورودی ها رو با دیتابیس چک میکنه

دوست خوبم ممنون از راهنمایی تون چشم مطالعه هم میکنم اما صحبت شما کمی بازی با کلمات هستش شاید هم به خاطر این موضوع باشه که من ایران نیستم و کلماتی که در ایران استفاده میشه بی خبرم ... اما من اعتبار سنجی رو اینجوری برای خودم معنی کردم که هر زمان اطلاعاتی قرار باشه وارد database بشه باید و باید و باید صحت اون چک بشه ... این میتونه اطلاعاتی باشه که کاربر میده یا اطلاعاتی که شما به کاربر نمایش میدی و اون ممکن تغییر بده ... در هر صورت اگر اشتباه منظور خودم رو رسودنم باید من رو ببخشین.
  پاسخ
تشکر شده توسط :
#9
نقل قول:دوست خوبم ممنون از راهنمایی تون چشم مطالعه هم میکنم اما صحبت شما کمی بازی با کلمات هستش شاید هم به خاطر این موضوع باشه که من ایران نیستم و کلماتی که در ایران استفاده میشه بی خبرم ... اما من اعتبار سنجی رو اینجوری برای خودم معنی کردم که هر زمان اطلاعاتی قرار باشه وارد database بشه باید و باید و باید صحت اون چک بشه ... این میتونه اطلاعاتی باشه که کاربر میده یا اطلاعاتی که شما به کاربر نمایش میدی و اون ممکن تغییر بده ... در هر صورت اگر اشتباه منظور خودم رو رسودنم باید من رو ببخشین.


دوست گرامی هر جا هستی سرت سلامت و موفق باشی
ولی بازی با کلمات و این بحثی که ما داشتیم خیلی فرق میکنه ، اعتبارسنجی و data verification دو اصطلاح جدا از هم هستند اگر غیر از این بود حرف شما درست بود ولی من بازی با کلمات نکردم
آره بعضی وقتها ورودی ها که از کاربر میاد فقط باید اعتبار سنجی بشه و وارد دیتابیس بشه ولی بعضی وقتها ورودی ها از یک لیست محدود که از جدولی خوندیم و برای کاربر نشون دادیم توسط کاربر انتخاب میشه که اون مقادیر هم باید اعتبارسنجی بشن هم باید data verification
مثال
فرض کنید یک فرم دارید که تو این فرم یک لیست کشویی (کمبوباکس یا همون select) داریم ( لیست کشور محل اقامت) که از جدول کشور در دیتابیس خونده میشه و برای کاربر نمایش داده میشه و کاربر رو محدود میکنه که فقط یکی از آیتم ها رو انتخاب کنه

کاربر بعد از انتخاب کشور در اصل id کشور رو از جدول مربوطه انتخاب کرده و این id موقعه ارسال باید هم اعتبارسنجی بشه که ورودی آیا عدد صحیح هست یا خیر و هم چک بشه آیا اصلا این آی دی در جدول کشورها وجود داره یا نه که به اصلاح میگن data verification
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان