جلوگیری از هک شدن سایت توسط اینکلود کردن فایلهای ناخواسته

i-php-i

Active Member
من می خوام برای ایجاد امنیت بیشتر، نام فایلهایی که باید اینکلود بشن رو بجای اینکه توی متغیر قرار بدم، توی ثابتها قرار بدم تا امنیت بیشتری ایجاد بشه.

آیا با انجام اینکار جلوی هک سایت رو از طریق اینکلود کردن فایلهای ناخواسته می گیرم و آیا هکر ها می تونن کاری کنن که مقدار ثابت تغییر پیدا کنه؟

اگر این روش امنیت کاملی ایجاد نمی کنه چه راهی رو پیشنهاد می کنید؟

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

P.H.P

Member
سلام

سرچ کن ببین چه راه هایی برای هک استفاده میشه بعد روی امنیت کار کن

شما باید:

۱) صحیح قرار گرفتن سطح دسترسی ها
۲) فیلتر کردن ورودی ها
۳) کانفیگ صحیح

را رعایت کنی

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

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

موفق
 

i-php-i

Active Member
سلام

سرچ کن ببین چه راه هایی برای هک استفاده میشه بعد روی امنیت کار کن

شما باید:

۱) صحیح قرار گرفتن سطح دسترسی ها
۲) فیلتر کردن ورودی ها
۳) کانفیگ صحیح

را رعایت کنی

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

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

موفق
منظور من رو متوجه نشدید. منظور من اینکد کردن نبود، منظورم include کردن بود.

در مورد امنیت سرچ کردم ولی می خوام بدونم که برای اینکلود کردن فایلها، از اونجا که امکانش هست که هکر بتونه مقادیر متغیرها رو تغییر بده و یه فایل دلخواه خودش رو اینکلود کنه، شما استفاده از ثابتها رو پیشنهاد می کنید یا نه؟
 

i-php-i

Active Member
ثابت ها و متغیر ها در اینجا هیچ فرقی نمی کنن ولی من برای امنیت بیشتر پیشنهاد میدم که اطلاعات رو از دیتابیس بخونید
توی همه خود آموزها نوشته که نام فایل مورد نظر برای اینکلود کردن رو توی متغیر ها قرار ندید چون امکانش هست که هکر بتونه متغیر رو تغییر بده.

من می خوام بدونم که اگه از ثابتها استفاده کنم، امکانش هست که هکر بتونه ثابت رو هم تغییر بده؟
 

Masoud1365

مدیر انجمن
من می خوام بدونم که اگه از ثابتها استفاده کنم، امکانش هست که هکر بتونه ثابت رو هم تغییر بده؟
بسگی داره که ثابت رو بصورت داینامیک مقدار دهی کنی یا استاتیک !
بعدشم اگر از دیتا بیس استفاده کنید بهتره !
 

i-php-i

Active Member
بسگی داره که ثابت رو بصورت داینامیک مقدار دهی کنی یا استاتیک !
بعدشم اگر از دیتا بیس استفاده کنید بهتره !
من ثابتها رو بصورت استاتیک مقداردهی می کنم.

با این وجود امکان سو استفاده هکر و جایگزینی مقدار ثابت و اینکلود کردن فایلهای غیر مجاز رو داره؟
 

Masoud1365

مدیر انجمن
اگر به صورت استاتیک مقدار دهی میکنید که امکان تغییر ثوابت نیست ! همون جوری که از اسمش پیداست ( ثابت ) نمیشه تغییرش داد !
 

i-php-i

Active Member
اگر به صورت استاتیک مقدار دهی میکنید که امکان تغییر ثوابت نیست ! همون جوری که از اسمش پیداست ( ثابت ) نمیشه تغییرش داد !
من تست کردم، اگر به یک ثابت چند مقدار مختلف بدیم، پی اچ پی بدون ارور دادن، اولین مقداری که به ثابت دادیم رو به عنوان مقدار اصلی در نظر می گیره.

بنظرتون راهی نیست که هکر بتونه در ابتدای کد، مقدار ثابت رو تغیییر بده؟
 

Masoud1365

مدیر انجمن
شما ببین بعد از این که ثابتت رو مقدار دهی کردی خودت میتونی تغیرش بدی ؟ ( تا بعدش بیایم سراغ هکر )
 

i-php-i

Active Member
شما ببین بعد از این که ثابتت رو مقدار دهی کردی خودت میتونی تغیرش بدی ؟ ( تا بعدش بیایم سراغ هکر )
تست کردم، اگه چند مقدار مختلف رو به ثابت بدیم، پی اچ پی اولین مقدار رو به عنوان مقدار ثابت در نظر می گیره. سوالم اینه که یه هکر می تونه با تزریق کد و ... در ابتدای کد یه مقدار مورد نظر خودش رو به ثابت بده و بقیه کدهای مربوط به ثابت رو از کار بندازه؟
 

Masoud1365

مدیر انجمن
این سوال شما خیلی کلی هست !
اگر اصول کد نویسی رعایت شده باشه خیر نمیتونه این کارو بکنه !
اما امنیت یه چیز نسبی هست یعنی هیچ کس نمیگه امنیت سایت من 100% هست یا حتی شرکت های سکیور کننده هم نمیگن 100% میگن 99.9999% :wink:
 

i-php-i

Active Member
این سوال شما خیلی کلی هست !
اگر اصول کد نویسی رعایت شده باشه خیر نمیتونه این کارو بکنه !
اما امنیت یه چیز نسبی هست یعنی هیچ کس نمیگه امنیت سایت من 100% هست یا حتی شرکت های سکیور کننده هم نمیگن 100% میگن 99.9999% :wink:
من ابتدای اسکریپت یه کلاس ایجاد می کنم و توی سازنده کلاس مقدار ثابت رو تخصیصئ می دم. با این کار، آیا هکر امکان تغییر ثابت یا تعریف یه مقدار دیگه برای ثابت رو داره؟
 

farik

Well-Known Member
باسلام..
اول از همه باید بگم که شما هر کار هم که بکنین میشه با یک باگ کوچیک و نصب یک شل رو سیستمتون کل این معادلات رو بهم زد....درسته که این بخش خیلی مهمه ولی گاهی تمرکز بیش از حد رو چیزهای کوچیک باعث میشه از چیزهای بزرگ غافل بشین..در کل اینکه اینکلود های ناخواسته یک روش نفوذه غیر قابل انکاره ولی همونطور که دوستان گفتن میتونی با استفاده از دیتا بیس این مشکل رو خیلی راحت تر از این روش ها حل کرد..
تازه اگه شما میخواین یک ثابت تعریف کنین خوب مستقیما رشته ادرس رو ارجا بدین به تابع...چون اگه مقدار دهی اولیه تابع از طریق get یا post باشه در اونصورت بازم میشه مقدار ثابت رو عوض کرد..ببخشید اگه گنگ توضیح دادم..
موفق باشید...
 

i-php-i

Active Member
باسلام..
اول از همه باید بگم که شما هر کار هم که بکنین میشه با یک باگ کوچیک و نصب یک شل رو سیستمتون کل این معادلات رو بهم زد....درسته که این بخش خیلی مهمه ولی گاهی تمرکز بیش از حد رو چیزهای کوچیک باعث میشه از چیزهای بزرگ غافل بشین..در کل اینکه اینکلود های ناخواسته یک روش نفوذه غیر قابل انکاره ولی همونطور که دوستان گفتن میتونی با استفاده از دیتا بیس این مشکل رو خیلی راحت تر از این روش ها حل کرد..
تازه اگه شما میخواین یک ثابت تعریف کنین خوب مستقیما رشته ادرس رو ارجا بدین به تابع...چون اگه مقدار دهی اولیه تابع از طریق get یا post باشه در اونصورت بازم میشه مقدار ثابت رو عوض کرد..ببخشید اگه گنگ توضیح دادم..
موفق باشید...
من از یه معماری سه لایه ای استفاده می کنم و (توی لایه کنترل) امکانش نیست که نام فایلها رو مستقیما توی تابع اینکلود قرار بدم. به هیمن دلیل باید بین ثابت و متغیر یکی رو انتخاب کنم و نام فایل رو در اون ذخیره کنم تا بعدا در لایه نمایش، بتونم فایل مورد نظر رونمایش بدم.

برای این کاربرد، شما چه پیشنهادی دارید؟
 

Masoud1365

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

i-php-i

Active Member
:-?
شما توی ثابت چه مقداری رو میریزید و اینکلود میکنید ؟ خب همونو به صورت استاتیک مستقیم اینکلود کنید !

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

mtchabok

Member
عزیزم خوب چه کاریه !
فایلهات رو به صورت مستقیم اینکلود کن چرا باید آدرسشون رو در ثابت ذخیره کنی.
خوب اگه اینطوری باشه این همه ثابت تعریف میکنی که فقط هم یه بار استفاده میشن . خوب اونوقت چه بدرد میخوره که الکی حافظه رو اشغال کنن.
شما فقط یه ثابت تعریف کن و اونم مسیر اصلی سایتت هس و بعد تمامی فایلهات رو به وسیله همین ثابت اینکلود کن . اینطوری نه دیگه ترس از اینکلود فایلهای خطرناک داری نه اینکه حافظه ای رو بیخودی اشغال میکنی .
 

i-php-i

Active Member
عزیزم خوب چه کاریه !
فایلهات رو به صورت مستقیم اینکلود کن چرا باید آدرسشون رو در ثابت ذخیره کنی.
خوب اگه اینطوری باشه این همه ثابت تعریف میکنی که فقط هم یه بار استفاده میشن . خوب اونوقت چه بدرد میخوره که الکی حافظه رو اشغال کنن.
شما فقط یه ثابت تعریف کن و اونم مسیر اصلی سایتت هس و بعد تمامی فایلهات رو به وسیله همین ثابت اینکلود کن . اینطوری نه دیگه ترس از اینکلود فایلهای خطرناک داری نه اینکه حافظه ای رو بیخودی اشغال میکنی .
من دارم از یه معماری سه لایه ای استفاده می کنم. توی این معماری، فایلهایی که باید اینکلود بشن رو نمی شه توی لایه کنترل نمایش بدم. به همین دلیل باید آدرسشون رو توی یه متغیر یا یه ثابت ذخیره کنم.

مسئله حافظه هم مطرح نیست، چون یه ثابت وجود داره که نام فایل رو تو خودش ذخیره می کنه. توی لایه کنترل با استفاده از دستورات شرطی، نامهای مختلف رو توی یه ثابت ذخیره می کنم و توی لایه نمایش ثابت رو توی تابع اینکلود قرار می دم.

حالا چه نظری دارید؟
 

greencat

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

جدیدترین ارسال ها

بالا