PDA

View Full Version : سوال: پرسش در مورد امنیت در کوری استرینگ



pedram_ns
چهارشنبه 28 مهر 1389, 12:31 عصر
با سلام


می دونیم که با کوری چون عبارت جستجو شده در آدرس بار نمایش داده می شه یکسری کد نویسی انجام می شه تا کاربر بصورت دستی نتونه یک عبارت نامعتبر رو وارد کنه من یکسری چیز هایی می دونم ولی اگر دوستان کمک کنن و همه ریز کاری های کوری رو یک توضیح بدن یا یک منبع معرفی کنند ممنون می شم.


در ضمن با همه کار ها اگر کاربر به جای عبارت جستجو شده یک عبارت معتبر وارد کنه کوری کارش رو می کنه و به کاربر اجازه می ده عبارت جدید سرچ بشه ولی در یک سایت دیدم که اگر در ادرس بار کوری رو با یک کلمه معتبر تغییر بدی باز هم می گه مقداری بدست نیامد یعنی به کاربر اجازه نمی ده دستی حتی کلمه معتبری به کوری اضافه کنه کسی می دونه به چه صورتی این کار ممکنه.


پرسش سوم هم اینه که وقتی کلمه فارسی "املاک" رو در فایرفاکس با کوری می فرستم فارسی میره ولی وقتی در نتایج یافت شده(لیست ویو) به صفحه دوم می رم بصورت %u0627%u0645%u0644%u0627%u06a9 در میاد البته درست کار می کنه و صفحه دوم رو نشون می ده ولی چرا اینطوری می شه؟


پیشاپیش سپاس گذاری می کنم

BookWorm
چهارشنبه 28 مهر 1389, 22:03 عصر
سلام به دوست عزیز
QueryString یک از روش های انتقال اطلاعات در مسان صفحات وب است سایت شما می تواند از Session هم استفاده کند . بدین روش اعتبار سنجی در انتقال اطلاعات ممکن خواهد بود . در ضمن می توان QueryString را کد گذاری کرد و درباره کلمه "املاک" این وازه در کد utf به وجود آمده است .
نحوه استفاده از Session هم بصورت زیر است .



Session["Login"] = "DoLogin";
Response.Redirect("~/Search.aspx");

و سپس در صفحه Search مقدار

if (Session["Login"] == null
مورد بررسی قرار گیرد .

majnun
پنج شنبه 29 مهر 1389, 03:01 صبح
بهترین راه برای اینکار کد نویسی کردن کوئری استرینک هست

استفاده زیاد از سشن فکر نکنم خوب باشه

کد اسکی کاراکتر ها رو عوض کنید دوباره در صفحه دوم به حالت اولیه در بیارین

خیلی ساده هست

farhadt
پنج شنبه 29 مهر 1389, 03:37 صبح
نمیدونم این راه حل برای اینکه کلمه جدید مورد قبول نشه خوبه یا نه.

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



If Request.UrlReferrer.AbsoluteUri = "http://mysite.com/search.aspx" Then
Response.Write("ACCEPT")
Else
Response.Write("DENY")
End If


البته جای کار داره هنوز.

majnun
پنج شنبه 29 مهر 1389, 03:43 صبح
میدونم این راه حل برای اینکه کلمه جدید مورد قبول نشه خوبه یا نه.

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

کد:
If Request.UrlReferrer.AbsoluteUri = "http://mysite.com/search.aspx"Then
Response.Write("ACCEPT")
Else
Response.Write("DENY")
EndIf
البته جای کار داره هنوز.




ببشیدا اگه آدرس رو اینجوری داد چی ؟

test.com/search.aspxid=1;

برای چند حالت شما میخواین کد بنویسین ؟

هزار مدل مختلف ممکنه داده بشه :لبخند:

برای اینکار باید وقتی بعد از اینکه مقدار را از کوئری استرینگ گرفتین id رو چک کنید ببینید وجود داره یا نه در صورت عدم وجود خطا بده

نه اینکه با یه آدرس مقایسه کنیمش :لبخند:

farhadt
پنج شنبه 29 مهر 1389, 04:41 صبح
ببشیدا اگه آدرس رو اینجوری داد چی ؟

test.com/search.aspxid=1;

برای چند حالت شما میخواین کد بنویسین ؟

هزار مدل مختلف ممکنه داده بشه :لبخند:

برای اینکار باید وقتی بعد از اینکه مقدار را از کوئری استرینگ گرفتین id رو چک کنید ببینید وجود داره یا نه در صورت عدم وجود خطا بده

نه اینکه با یه آدرس مقایسه کنیمش :لبخند:

والا من که نفهمیدم از چی ایراد گرفتی. اگه منظورت اینه که اگه توی آدرس querystring باشه چیکار کنیم که راه های زیادی داره. یکی اینکه Request.UrlReferrer.AbsoluteUri رو نگیریم، Request.UrlReferrer.AbsolutePath رو بگیریم و باهاش کار کنیم. یا اینکه از Instr و .. که بتونی منحصر به وبسایت خودن بودن رو چک کنی.




برای اینکار باید وقتی بعد از اینکه مقدار را از کوئری استرینگ گرفتین id رو چک کنید ببینید وجود داره یا نه در صورت عدم وجود خطا بده


اگه درست فهمیده باشم میگی که یه querystring به نام id رو همینجوری بزاریم واسه اینکه بدونیم خودمون فرستادیم. حالا اگه اون کاربر ببو نباشه و اینطوری سرچ کنه چی؟:لبخند::


http://mysite.com/search.aspx?id=1&word=myword

pedram_ns
پنج شنبه 29 مهر 1389, 09:35 صبح
با تشکر از همه.
خوب من در تمامی صفحاتم فیلد جستجو رو دارم یعنی کاربر اجازه داره از تمامی صفحات عمل جستجو رو انجام بده به این صورت روشی که توضیح دادید کارایی نداره.
کاری که دارم می کنم مثل سایت کتاب اوله.یک نگاهی بندازید می بینید به چه صورت کار می کنه.
در مورد کد کردن کوری یا فیلتر کردن بعضی از کاراکتر ها در کوری هم اگر امکان داره یک توضیح کامل تری بدید.(در کل یک روش کارامد و مرسوم که در مورد امنیت کوری باید رعایت بشه)
ممنون

alonemm
پنج شنبه 29 مهر 1389, 10:05 صبح
بهترین راه برای شما اینکه رشته خودتون رو رمزگزاری کنید.
در این باره هم کلی مطلب توی این تالار هست.

فقط کمی جستجو.

farhadt
پنج شنبه 29 مهر 1389, 10:17 صبح
روشی که من گفتم صرفا واسه این بود که فقط از Postback های سایت سرچ ها رو قبول کنید. میتونید از قطعه کد زیر به دامین ارسال کننده درخواست دسترسی داشته باشید:



If Not Request.UrlReferrer.Authority Is Nothing Then
If Request.UrlReferrer.Authority = "mysite.com" Then
Response.Write("Accept")
Else
Response.Write("Deny")
End If
Else
Response.Write("Deny")
End If


در هر صورت فقط یه پیشنهاده.

pedram_ns
پنج شنبه 29 مهر 1389, 14:15 عصر
بهترین راه برای شما اینکه رشته خودتون رو رمزگزاری کنید.
در این باره هم کلی مطلب توی این تالار هست.

فقط کمی جستجو.

راستش جستجو هم کردم ولی چیزی دستم رو نگرفت لطف کنید یک منبع معرفی کنید یا خودتون یک نمونه کد بگذارید.

ممنون می شم

majnun
پنج شنبه 29 مهر 1389, 15:13 عصر
راستش جستجو هم کردم ولی چیزی دستم رو نگرفت لطف کنید یک منبع معرفی کنید یا خودتون یک نمونه کد بگذارید.


درون تالار c# بگردی کد های زیادی برای رمز نویسی هست

pedram_ns
پنج شنبه 29 مهر 1389, 18:13 عصر
ای خدااااااااااااااا :گریه:
دوستان حتما تا به حال با کوری کار کردید و یک سری کد نویسی انجام می دید تا امنیت اون رو بالا ببرید من خودم تا به حال برای ارسال اطلاعات با form کار می کردم(چون کمی امن تره) ولی الان به کوری روی اوردم و چیزی در موردش نمی دونم در مورد hash کردن و غیره هم تجربه ایی ندارم یک نمونه عملی و کاربردی برای یک تمام آماتور می خوام.

pedram_ns
جمعه 30 مهر 1389, 14:29 عصر
خوب انگار کسی از دوستان تو عمر با برکتش با کوری کار نکرده!
من در تمامی تکس باکس ها و همچنین در کوری با وارد کردن عبارت <script> ارور دریافت می کنم و در واقع سیستم اجازه کار به اسکریپتها نمی ده ایا این به این معنیه که سایت من در این زمینه ایمنه؟
چه عبارت های دیگه وجود داره که می تونم چک کنم(برای حمله به سایتم)
استفاده از UrlEncode و UrlDecode برای کوری مناسب و کافیه؟