PDA

View Full Version : آموزش: آموزش جلوگیری از تزریق کدهای XSS به آدرس سایت هایی که طراحی می کنیم.



idocsidocs
جمعه 25 شهریور 1390, 14:37 عصر
همونطور که می دونید هکر ها می تونن کدهای مخرب خودشون رو توی لینک سایتهایی که طراحی می کنیم قرار بدن و از این طریق کوکی های ما رو بدزند.

برای جلوگیری از این حمله، من این روش رو بکار می برم:

1- ابتدا توی htaccess لینکهای سایتم رو بصورت زیر تعریف می کنم. ( توجه کنید که فقط حروف و اعداد می تونن جز این لینک قرار بگیرن)

RewriteRule ^panel/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)$ panel.php?controller=$1&action=$2&param1=$3 [NC,L]
اگر هکر کاراکتری غیر از حروف و اعداد توی لینکها گذاشته بود، کاربر رو به صفحه 404 می فرستم. توی صفحه 404 ابتدا کوکی های سایتم رو حذف می کنم و بعد خروجی رو تولید می کنم.

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


RewriteRule ^panel.php?controller=c&action=a&param1=p [NC,L]

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

2- از اونجاییکه روش بالا محدودیت داره، می شه از طریق کد زیر جلوی تزریق تگهای script به داخل url سایت رو گرفت. البته این کد جلوی رجیستر گلوبال و ارایه REQUEST رو هم می گیره.



RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]


از اونجاییکه این اولین آموزش من توی فرومهای فارسی هست، دوستان لطفا ایرادهای خودشون رو بیان کنن.

A B C D
شنبه 26 شهریور 1390, 08:49 صبح
همونطور که می دونید هکر ها می تونن کدهای مخرب خودشون رو توی لینک سایتهایی که طراحی می کنیم قرار بدن و از این طریق کوکی های ما رو بدزند.
چطوری مثلا؟

idocsidocs
شنبه 26 شهریور 1390, 10:37 صبح
چطوری مثلا؟ کدهای خودشون رو می ذارن توی تگهای اسکریپت.

<script>alert('fffffff');</script>

A B C D
شنبه 26 شهریور 1390, 11:56 صبح
خسته نباشید! اینم شد توضیح و مثال؟
الان شما این کدها رو اینجا گذاشتی حمله صورت گرفت؟
پس قضیه اینه که کجا باشه و برنامهء شما چطوری باهاش چکار بکنه یا نکنه.

idocsidocs
شنبه 26 شهریور 1390, 12:23 عصر
خسته نباشید! اینم شد توضیح و مثال؟حرفایی می زنی ها !

خب توی تگهای اسکریپت کدهای دلخواه خودت رو بزار.

eAmin
شنبه 26 شهریور 1390, 14:11 عصر
منظورشون اینه، یعنی جلوی این نوع حملات ممکنه گرفته بشه:

http://www.x.com/index.php?<script>alert('fffffff');</script>

idocsidocs
شنبه 26 شهریور 1390, 14:29 عصر
منظورشون اینه، یعنی جلوی این نوع حملات ممکنه گرفته بشه:بله منظورم همینه.

بنظرتون این روش می تونه از سرقت کوکی ها و مخصوصا کوکی PHPSESSID جلوگیری کنه؟

البته این روش محدودیتهایی هم ایجاد می کنه.

A B C D
شنبه 26 شهریور 1390, 14:56 عصر
حرفایی می زنی ها !

خب توی تگهای اسکریپت کدهای دلخواه خودت رو بزار.

منظورشون اینه، یعنی جلوی این نوع حملات ممکنه گرفته بشه:

http://www.x.com/index.php?<script>alert('fffffff');</script>

بله منظورم همینه.


اونی که تو گفتی با این یکی بنظرت یخورده زیاد فرق نمیکنه؟
یعنی نوشتن کاملش اینقدر سخت بود؟ :متفکر:

ضمنا اینکه همینطوری کاری نمیکنه. هنوزم مثال ناقصه.
بستگی داره اون پارامتر رو کجا چطوری بکار ببریم.

جواب سوال کلی پاسخی کلی است.
جواب ابهام ابهام.
جواب یه چیز ناقص یه چیز ناقص.

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

idocsidocs
شنبه 26 شهریور 1390, 15:28 عصر
اونی که تو گفتی با این یکی بنظرت یخورده زیاد فرق نمیکنه؟
یعنی نوشتن کاملش اینقدر سخت بود؟ :متفکر:

ضمنا اینکه همینطوری کاری نمیکنه. هنوزم مثال ناقصه.
بستگی داره اون پارامتر رو کجا چطوری بکار ببریم.

جواب سوال کلی پاسخی کلی است.
جواب ابهام ابهام.
جواب یه چیز ناقص یه چیز ناقص.

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

مگر اینکه همینطوری یه چیزی میپرونی و بعد انتظار داری یه آدم بیکاری بیاد کلی مقاله و مطلب بده.چی بگم؟

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


ضمنا اینکه همینطوری کاری نمیکنه. هنوزم مثال ناقصه.
بستگی داره اون پارامتر رو کجا چطوری بکار ببریم.اگر زیاد سخت گیری نکنید می تونید هر بار که کاربر به صفحه 404 می یاد، همه کوکی ها (حداقل کوکی PHPDSESSID) رو حذف کنید.

مطلب کاملا روشنه و چیز مبهمی نیست.

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

نظرتون چیه؟

Mr.Moghadam
شنبه 26 شهریور 1390, 22:42 عصر
شاید کد شما بتونه از طریق آدرس جلوی این حملات رو بگیره اما باید کاری کرد که هکر از طریق فرمها هم نتونه این کاروانجام بده.

idocsidocs
یک شنبه 27 شهریور 1390, 12:02 عصر
شاید کد شما بتونه از طریق آدرس جلوی این حملات رو بگیره اما باید کاری کرد که هکر از طریق فرمها هم نتونه این کاروانجام بده.

توی فرمها به سادگی می شه با استفاده از توابع آماده پی اچ پی جلوی XSS رو گرفت. تنها در زمانی که لازمه به بعضی از تگهای html اجازه داد، کار کمی مشکل می شه که اون رو هم می شه با کلاسهای موجود بر طرف کرد.

از اونجاییکه من از این طریق جلوی XSS رو می گیرم، بغیر از تزریق کد مخرب در لینک و تزریق کدهای مخرب از طریق فرمها، آیا راه دیگه ای وجود داره که هم وجود داره که یه هکر بتونه به صورت مستقیم وب سایت ما رو مورد حمله قرار بده؟