سلام خسته نباشید ❤️
من یه پروژه دارم با لاراول نوشته ام و تیم امنیتی بهم گفته اند که کدت باید ناخوانا بشه طوری که اگر دست کسی افتاد به هر دلیلی نتونه از ساختار دیتابیست سر در بیاره
مثلا با دیدن این کد :
$flights_plane_type = $this->flight->groupBy(['type_id'])
->with(['type'])
->whereIn('type_id',$types)
->whereBetween('flight_date',[$rep_date_from,$rep_date_to])
->get([
'type_id',
\DB::raw('SUM(flight_total_time) as "total_plane_type_time"'),
]);
میتونه تشخیص بده جدول مثلا flights یه ستون داره به اسم typeid و flighttotaltime
خیلی گشتم تو اینترنت ولی به جوابی که میخواستم نرسیدم.
چیزی که من میخوام به زبان ساده اینه که بتونم ستون ها رو تغییر نام بدم مثلا جای typeid بزنم مثلا TYPERDGF
بعضی ها گفته بودن که یکی از نرم افزارها رو نصب کن و کدهاتو کد گذاری کن. اما من نمیخوام همه کدها رو رمزگذاری کنم.
Zend Guard
IonCube
SourceGuardian
phpbolt
etc.
اما اینها پولی هستن و نسخه های کرک شده اینها php 7 رو ساپورت نمیکنه.از طرفی برای اجرای کد توی سرور هم باید extension رو بذارم توی فولدر php ->extensions که باز این کار غیر ممکنه چون اجازه گذاشتن اکستنشن رو هم به من نمیدن.(برای امنیت)
یه پکیج هم بود که یه ایرانی نوشته بود اونم نتونست کمکم کنه تست کردم ایراد داشت موقع اجرا. اینم لینک https://github.com/SiavashBamshadnia/Laravel-Source-Encrypter
(اینها رو نوشته ام که در جواب اینها رو ننویسید.😁
حالا راهی به نظرتون میرسه که منو کمک کنید ممنون میشم.
اضطراری به کمک احتیاج دارم ممنونم.
خواهش میکنم.
نکته ای که شما باید توجه داشته باشید اینه که: PHP یک زبان تفسیری هست.. اما این به چه معناست؟
هر وقت که شما قطعه کدی رو اجرا میکنید، چه یک کد کوتاه و ساده باشه.. و چه یک وب اپلیکیشن کامل.. این پروسه از طریق interpreter یا مفسر PHP صورت میگیره. که متداول ترین اونها PHP FPM و مفسر CLI هستند.
کار این مفسر ها بسیار ساده ست: کدهای PHP رو میگیرند.. تفسیر میکنند و نتایج رو بر میگردونند.
این پروسه به طور معمول برای تمام زبان های تفسیری اتفاق میفته. در بعضی از زبان ها ممکنه که برخی از این مراحل حذف بشه; اما در نهایت ایده و روال کلی کار همینه.
در PHP این پروسه به شکل زیر اتفاق میفته:
به همین خاطر هست که PHP پرفرمنس نسبتا پایینی داره..
چون مراحل زیادی باید اتفاق بیفته
حالا شما فرض کن یه پروسه Encode و Decode هم به این مراحل اضافه بشه..
مسلما این موضوع به شکل نسبی روی پرفرمنس اثر میگذاره..
سوای این، امنیت کد در زبان های سطح پایین تر مطرحه
که باید مراقب باشید با مشکلات Memory Leak روبرو نشید..
پیشنهاد من اینه که دوستان رو قانع کنید: که این راهش نیست.
ولی اگر هم شرایط اجباری هست که باید یکی از ابزارهایی که خودتون نام بردید رو تهیه کنید.
خواسته بسیار نا معقولی هست...
تمرکز اصلی یک برنامه نویس، باید نوشتن کدهای تمیز و خوانا باشه.
در واقع کوئری که بالا مثال زدی.. برای این انقدر خوانا هست که: Eloquent ابزار فوق العاده ای هست.
نوشتن کدی که کار کنه، کار سختی نیست ..
اما نوشتن کد های تمیز (Clean Code) و قابل توسعه کار نسبتا مشکلیه ..
یکی از قواعد نوشتن کد های تمیز ، اینه که کد شما خوانا باشه.
حالا
به جایی که امنیت سیستم رو مهیا کنند
از شما میخواند که کد رو ناخوانا کنید تا اگر کسی این فایل رو دید از ساختار دیتابیس سر در نیاره؟؟؟؟ 😐😐
اگر کسی بتونه این فایل رو ببینه که میتونه فایل ENV رو هم ببینه
که داخلش user & pass دیتابیس هست
نه تنها ساختار دیتا بیس رو بلکه میتونه کل دیتابیس رو شخم بزنه
مشکل اصلی امنیت سیستم هست.. که باید تامین بشه.
@ali.bayat آقای مهندس بیات .
📌 اول از شما بابت پاسخگویی تشکر میکنم 🌹
📌 من قبول دارم که خواسته بسیار نا معقولی هست اما چی کار کنم وقتی اینو از من میخوان .🌝
📌 در مورد فایل env : به من گفتن کلا پروژه رو encode کن یعنی env هم شاملش میشه .
📌 منظور از امنیت سیستم ، امنیت سرور هست؟ خب باید بگم امنیت سرور با من نیست اونها ردیف میکنن . ما در مورد امنیت کد صحبت میکنیم.
خب باید بگم امنیت سرور با من نیست اونها ردیف میکنن . ما در مورد امنیت کد صحبت میکنیم.
تا وقتی امنیت سرور خدشه دار نشه، نفوذی نمی تونه رخ بده که امنیت کد به خطر بیفته.
میدونم این پاسخی نیست که شما دنبالش هستید ولی به نظرم همون طوری که جناب بیات هم اشاره کردند، تمرکز اصلی باید روی امنیت سرور باشه و چیزی که دنبالش هستید به جز دردسر ثمره ی دیگه ای نداره واقعا. تامین امنیت سرور هم تقریبا خیلی شسته رفته و ساده هست. کافیه طبق دستورالعمل های رایج سطح دسترسی ها و بارگزاری فایل ها انجام بشه. اون وقت تقریبا نفوذ مستقیم بالکل منتفی خواهد بود.
من این موضوع رو توی لاراکست هم پرسیدم و جواب هایی که اونها دادن رو هم دریافت کرده ام.
اونها هم همین جواب دوستان @ali.bayat و @mhyeganeh رو دقیقا داده بودن . گفته بودن که اولا مبهم سازی کد امنیت نیست . ثانیا به جای اینکار روی امنیت کلی برنامه و امنیت سرور تمرکز کن.
اما من به صورت آزمایشی با SourceGuardian تو نسخه تریال(14 روزه) هم تست کردم و جواب گرفتم . قیمت سورس گاردین که php 7 رو ساپورت کنه حدود 200 دلاره.
نمیدونم باید به جنگ کسایی که تاییده امنیتی میدن برم . یا باید از این خواسته کوتاه بیان یا باید این رو بخرن. توکل بر خدا. 😊
خواهش میکنم.
نکته ای که شما باید توجه داشته باشید اینه که: PHP یک زبان تفسیری هست.. اما این به چه معناست؟
هر وقت که شما قطعه کدی رو اجرا میکنید، چه یک کد کوتاه و ساده باشه.. و چه یک وب اپلیکیشن کامل.. این پروسه از طریق interpreter یا مفسر PHP صورت میگیره. که متداول ترین اونها PHP FPM و مفسر CLI هستند.
کار این مفسر ها بسیار ساده ست: کدهای PHP رو میگیرند.. تفسیر میکنند و نتایج رو بر میگردونند.
این پروسه به طور معمول برای تمام زبان های تفسیری اتفاق میفته. در بعضی از زبان ها ممکنه که برخی از این مراحل حذف بشه; اما در نهایت ایده و روال کلی کار همینه.
در PHP این پروسه به شکل زیر اتفاق میفته:
به همین خاطر هست که PHP پرفرمنس نسبتا پایینی داره..
چون مراحل زیادی باید اتفاق بیفته
حالا شما فرض کن یه پروسه Encode و Decode هم به این مراحل اضافه بشه..
مسلما این موضوع به شکل نسبی روی پرفرمنس اثر میگذاره..
سوای این، امنیت کد در زبان های سطح پایین تر مطرحه
که باید مراقب باشید با مشکلات Memory Leak روبرو نشید..
پیشنهاد من اینه که دوستان رو قانع کنید: که این راهش نیست.
ولی اگر هم شرایط اجباری هست که باید یکی از ابزارهایی که خودتون نام بردید رو تهیه کنید.
@ali.bayat
این جوابی که شما نوشتید واقعا کامله من قانع شدم. منم سعی میکنم قانعشون کنم اگر هم نشدن از یکی از ابزارهای سوم شخص باید استفاده کرد به ناچار.
البته یه سری ابزارها و پکیج ها هستن که به مبهم سازی کدها کمک میکنه و اون رو با استفاده از php parser مبهم میکنه مثل YAK Pro - Php Obfuscator
این رو هم امتحان کردم و جواب گرفتم.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟