• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مقدار پارامتر value یه کوکی موقع ارسال urlencode و موقع دریافت خودکار decode میشه
#1
سلام،

این نکته رو از لابه لایه منوال پی اچ پی کشیدم بیرون.
http://php.net/manual/en/function.setcookie.php

نقل قول:Note that the value portion of the cookie will automatically be urlencoded when you send the cookie, and when it is received, it is automatically decoded and assigned to a variable by the same name as the cookie name.

نقل قول:همونطور که گفته شد تابع cookie() مقدار پارامتر value رو urlencode می کنه و موقع دریافت باز خودکار decode کرده و به یه متغیر با همون نام بعنوان نام کوکی اختصاص میده.

حالا سوال اینجاست چرا چنین میشه؟ البته جوابش مشخصه بخاطر مسائل امنیتی. ولی چه نوع روش هکی میتونه مقدار کوکی رو در بیاره و چه راهی رو طی میکنه برای اینکار؟
البته اگر امنیت خیلی مهم بود تابع setrawcookie() رو بجاش معرفی نمیکردن!! دلیل اصلی چیه؟


مرسی Heart
غایب
  پاسخ
تشکر شده توسط :
#2
مسئله امنیتی؟ فکر نکنم مربوط به مسائل امنیتی باشه.
url encode کلا برای تبدیل اطلاعات به اطلاعاتی هست که قابلیت انتقال در url رو داشته باشه. RFC اون هم اینه
http://www.faqs.org/rfcs/rfc3986.html
این موضوع ربطی به امنیت نداره
  پاسخ
تشکر شده توسط : Y.P.Y cyletech
#3
خب یعنی اگر من حتماً بدونم که کوکی من قرار نیست در url ای استفاده بشه برای بهینه سازی بهتره از همون setrawcookie() استفاده کنم؟ یا واقعاً فرقی نمیکنه؟
غایب
  پاسخ
تشکر شده توسط :
#4
منم با وحید موافقم
چون که فقط کاراکترهای غیر لاتین رو برای سیستم خوانا می کنه
حالا در کنارش امنیت هم مهیا کرده - ناخودآگاه
وبلاگ: Yousha.Blog.ir


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

  پاسخ
تشکر شده توسط :
#5
فقط بحث url نیست. اطلاعات post اطلاعات cookie باید urlencode بشه.
این فقط گفته که خود من این کار رو انجام میدم و اطلاعات رو encode و decode می کنم. لزومی نداره دولوپر این کار رو انجام بده
  پاسخ
تشکر شده توسط : cyletech
#6
بنظرم ارتباط خاص/مستقیمی به امنیت نداره. در وهلهء اول استانداردش گفته باید اینطوری باشه. معمولا به علت مسائل فنی پروتکل های مربوطه.

(۱۳۹۱ خرداد ۲۳, ۰۹:۵۶ ب.ظ)cyletech نوشته: برای بهینه سازی بهتره از همون setrawcookie() استفاده کنم؟ یا واقعاً فرقی نمیکنه؟

به این میگن بهینه سازی فوق جزیی. دیگه از جزیی هم جزیی تره Big Grin
یا اختلافی نداره یا اختلافش اونقدری ناچیزه که در عمل اهمیت نداره.
ضمنا بهرحال خودت باید اون عملیات رو انجام بدی اگر دیتایی که ارسال میکنی نیاز به urlencode داشته باشه.
توی یک درخواست نهایت چند بار چند بایت کوکی میخوای بفرستی. این هیچ کجاش هیچ چیزی نداره که در 99.99% برنامه ها و شرایط بتونه تاثیر مشهودی در پرفورمنس داشته باشه.

setrawcookie رو احتمالا گذاشتن که اگر به هر علتی خودتون خواستید کنترل بیشتری در جریان عملیات انجام شده داشته باشید بتونید. مورد استفادش هم بنظر من چیزی نمیرسه!!
  پاسخ
تشکر شده توسط : cyletech
#7
setrawcookie هم باز به بهینه سازی مربوط نمیشه. شما در هر صورت باید urlencode رو انجام بدین وگرنه دیتا به درستی در کوکی ذخیره نمیشه. استفادش مثلا برای حالتی هست که شما دیتای url encode شده دارین و اگر مجدد urlencde بشه دیتای اصلی از بین میره
  پاسخ
تشکر شده توسط : vejmad cyletech
#8
(۱۳۹۱ خرداد ۲۴, ۱۱:۵۵ ق.ظ)admin نوشته: setrawcookie هم باز به بهینه سازی مربوط نمیشه. شما در هر صورت باید urlencode رو انجام بدین وگرنه دیتا به درستی در کوکی ذخیره نمیشه.
من به این فکر کردم که ممکنه دیتایی که ارسال میکنه از اون کاراکترهایی که باید urlencode بشن نداره. در این حالت طبیعتا نیازی به چک کردن این قضیه و urlencode کردن نیست. حالا کسی ممکنه این رو در چنان شرایط خاصی یک جور بهینه سازی ببینه. چون تابع cookie نمیدونه دیتای شما از چه نوعیه و همیشه میاد تمام رشته رو اسکن میکنه و کاراکترهای غیرمجاز رو که باید urlencode بشن تبدیل میکنه.
بهرحال به این میشه گفت بهینه سازی. ولی بهینه سازیش مثل اینه که یک کیسه برنج 20 کیلو باشه و اون یکی 20 کیلو و 1 گرم!! پس درواقع از اون بهینه سازیهای توهمی و وسواسیه.

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


پرش به انجمن:


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