PDA

نسخه کامل مشاهده نسخه کامل : جلوگیری از sql injection



MrGee
26-07-2010, 15:46
سلام دوستان

من یه فایل php دارم که خیلی ساده‌اس و از چند خط تشکیل شده.
تو یکی از خطها یه ورودی رو به این شکل می گیره :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدو یه فایل هم به این شکل درست می کنه:
 
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدحالا می خواستم ببینم که چه کدی رو باید به فایل اضافه کنم تا مشکلی پیش نیاد:8::5:
ممنون...........

L u K e !
26-07-2010, 16:06
خوب اين چه ربطي به Sql injection‌داره ؟
من كه دستور Sql اي نمي بينم

MrGee
26-07-2010, 18:42
منظورم روش های مشابه بود.

مثلا ../.. که بره به دو دایرکتوری بالاتر و دستور های مشابه که می تونه خطرناک باشه

MaSoUd555
26-07-2010, 19:47
خب اینکه هیچکدوم تابع Include نداره

کلا باعث و بانیه باگ های LFI و RFI دو تا تابع هستشrequire و include

neopersia
26-07-2010, 21:53
سلام دوستان

من یه فایل php دارم که خیلی ساده‌اس و از چند خط تشکیل شده.
تو یکی از خطها یه ورودی رو به این شکل می گیره :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدو یه فایل هم به این شکل درست می کنه:
 
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدحالا می خواستم ببینم که چه کدی رو باید به فایل اضافه کنم تا مشکلی پیش نیاد:8::5:
ممنون...........
این کد زیاد خطر ناک نیست ولی بدون مشکل هم نیست!

مشکل اولش اینه که با آدرس دهی از پوشه web/ توی سرور لینوکس مشکل پیدا میکنید. چون مبنای آدرس رو دایرکتوری ریشه لینوکس در نظر میگیره نه دایرکتوری ریشه حساب کاربری شما!

مشکل بعدیش هم این هست که طرف میتونه هر فایل txt رو که شما توی سرور بتونید با php بهش دسترسی داشته باشید با دستکاری متغیر توی آدرس خراب کنه!

باید متغیری رو که از آدرس میگیره چک کنید تا مقدارش معتبر باشه بعد به تابع بدید همین!
برای مثال از این روش میتونید استفاده کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

tehro0n
30-07-2010, 00:03
این کد زیاد خطر ناک نیست ولی بدون مشکل هم نیست!

مشکل اولش اینه که با آدرس دهی از پوشه web/ توی سرور لینوکس مشکل پیدا میکنید. چون مبنای آدرس رو دایرکتوری ریشه لینوکس در نظر میگیره نه دایرکتوری ریشه حساب کاربری شما!

مشکل بعدیش هم این هست که طرف میتونه هر فایل txt رو که شما توی سرور بتونید با php بهش دسترسی داشته باشید با دستکاری متغیر توی آدرس خراب کنه!

باید متغیری رو که از آدرس میگیره چک کنید تا مقدارش معتبر باشه بعد به تابع بدید همین!
برای مثال از این روش میتونید استفاده کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

این @ ^ رو میشه یه توضیح کوتاه بدی که کاراییشون چیه؟ مدل های مختلفی دیدم و چیزایی هم فهمیدم اما نه کامل

neopersia
30-07-2010, 02:10
@ دلیمیتر هست و فرقی نمیکنه چه کاراکتری باشه فقط باید یک علامت باشه که اول و آخر الگو قرار بگیره
^ هم جزو پترن رجکس هست که با اول متن مورد جستجو مچ میشه. یعنی فقط اگر الگو رو در اول متن پیدا کنه تابع true بر میگردونه

tehro0n
30-07-2010, 12:46
@ دلیمیتر هست و فرقی نمیکنه چه کاراکتری باشه فقط باید یک علامت باشه که اول و آخر الگو قرار بگیره
^ هم جزو پترن رجکس هست که با اول متن مورد جستجو مچ میشه. یعنی فقط اگر الگو رو در اول متن پیدا کنه تابع true بر میگردونه

پس اینی که نوشتی در کل اینطوری میشه که به جای /web/:
اگر اول هر کاریکتری که بود و سپس حروف a تا z حروف کوچک یا بزرگ یا . یا _ و در آخر هر کاراکتری که بود آن را نمایش دهد؟
نقطه هم حتما باید اسلش قبل و بعد داشته باشه ؟ /./

اگه نکته دیگه هم هست بگی خوشحال میشم
مثلا علامتای دیگه که به کار برده نشده

neopersia
30-07-2010, 14:51
پس اینی که نوشتی در کل اینطوری میشه که به جای /web/:
نه این فقط متغیر Name رو از آدرس چک میکنه که کاراکتر غیر مجاز داخلش نباشه و یک نام پوشه معتبر باشه


اگر اول هر کاریکتری که بود و سپس حروف a تا z حروف کوچک یا بزرگ یا . یا _ و در آخر هر کاراکتری که بود آن را نمایش دهد؟
بله


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



اگه نکته دیگه هم هست بگی خوشحال میشم
مثلا علامتای دیگه که به کار برده نشده
بله تعداد بسیار زیادی از علامتهای دیگه هم هست که در این الگو به کار برده نشده!
این فهرستش هست میتونید مطالعه کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

AmiReza_71
13-05-2013, 06:10
چند تا راه کار می خواستم برای جلوگیری از SQL Injection - چطور میشه جلوی نرم افزارهای مثل هویج و غیره رو بست . بخدا این احمق های بیسواد امان ما رو بریدن با این SQL Injection