Golden Code – Telegram
Golden Code
737 subscribers
53 photos
248 links
نکات laravel, php و...
Download Telegram
Forwarded from Web Application Security
آسیب پذیری CRLF injection =

اگه هکر به عنوان user input به وب اپلیکیشن کاراکترهای CRLF یا همون
%0d%0a
رو تزریق کنه و وب اپلیکیشن رو تحت تاثیر قرار بده آسیب پذیری به وجود میاد.
به صورت کلی CRLF چیه؟ همون کلید Enterخودمون.
چه زمانی آسیب پذیری به وجود میاد؟ وقتی که ورودی کاربر به صورت ناامن در یک response Header قرار بگیرد.
پیش نیازها:

1. هر Header با Header بعدی با یک CRLF جدا میشود.
2. آخرین Header با Body با دو CRLF جدا میشود.
کاربردها:

1. سواستفاده از CRLF برای bypass کردن.
2. اکسپلویت سایر آسیب پذیری ها.
3. به وجود آوردن آسیب پذیری های مختلف‌.

1⃣ سواستفاده از CRLF برای bypass کردن:
اگه تو حملات injection نیاز به bypass داشتیم میتونیم از CRLF استفاده کنیم. برای مثال در command injection میتونیم از 0a% به عنوان یک command separator استفاده کنیم وقتی که سایر command separator هایی مثل | در blacklist قرار دارند.
و یا در XSS وقتی نیاز به بستن تگ داریم برای اکسپلویت و اجازه نداریم تگ رو ببندیم، از CRLF برای bypass استفاده میکنیم.
</noscript>
</noscript%0a>

2⃣ اکسپلویت سایر آسیب پذیری ها:
وقتی آسیب پذیری تو header ها وجود داره، برای اکسپلویت باید از CRLF injection کمک بگیریم در غیر این صورت آسیب پذیری self هست.
برای مثال اگه مقدار هدر X-Forwarded-For تو صفحه reflect میشه و XSS میخوره، واسه اکسپلویت آسیب پذیری باید با یک CRLF injection ترکیب بشه(راه های دیگه ای هم برای اکسپلویت این نوع XSS وجود داره مثل cache poisoning)

3⃣ به وجود آوردن آسیب پذیری های مختلف:
اگه ورودی کاربر در Response Header ها قرار بگیره، میتونیم response در دستکاری کنیم و به آسیب پذیری های مختلفی برسیم. فرض کنین که ورودی کاربر در قالب پارامتر username در cookie قرار میگیرد، ما میتونیم با دوتا CRLF زدن، Body رو کنترل کنیم و پیلود XSS خودمون رو قرار بدیم:
app.php?username=salam%0d%0a%0d%0a<img src=x onerror=alert()>

نکته آخر:
ممکنه بتونیم با این آسیب پذیری response هدر های امنیتی رو غیر فعال یا بازنویسی کنیم در مرورگر قربانی.

#CRLF_injection
👍3🙏2🤯1
در لاراول وقتی که داده‌ها از طریق فرم‌ها اعتبارسنجی میشن ممکنه بعضی ازونا فقط برای بررسی باشند و نیازی به ذخیره‌سازیشون در دیتابیس نداشته باشیم.

مثلا؟

وقتی یک فیلد مثل password_confirmation که فقط برای بررسی صحت پسورد قراره استفاده بشه و در نهایت نیازی به ذخیره ی اون نداریم میتونیم براش از exclude استفاده کنیم. اینجوری فقط دیتای مورد نیاز به دیتابیس ارسال میشه.
#Laravel
@GoldenCodeir
(به‌منبع و مثالش دقت کنید 👇🏾)
https://x.com/_newtonjob/status/1863869299569426803?t=3EjqobGwiK4Wm5Tdiq7jfQ&s=35
👍43💯1
ظاهر فرم ها بطور پیشفرض سادست ولی یه سری مواقع نیازه کاستوم بشن. یک قابلیتی که css ارائه داده و خیلی مفیده accent-color هستش.

با این قابلیت میشه حتی اجزای فرم مثل check box یا radio button ها رو هم به زیبایی کاستومشون کرد بصورت دیفالت تا با ظاهر سایت هماهنگ تر بشن👌🏾
#Css
#UI
@GoldenCodeir
(به‌منبع و مثالش دقت کنید 👇🏾)
https://x.com/csaba_kissi/status/1695692651188916575?t=QCxTPRVdbovbQJ-9Z8PD7w&s=35
🔥5👍1
با استفاده از Fallback Routes در لاراول میتونیم مسیرهایی که وجود ندارن (مثل آدرس‌های اشتباه) رو به خوبی مدیریت کنیم.
یعنی بجای نمایش صفحه‌ خطای دیفالته لاراول، یک صفحه‌ی 404 کاستومایز شده و زیبا به کاربران نشون بدیم.
#Laravel
@GoldenCodeir
(به‌منبع و مثالش دقت کنید 👇🏾)
https://x.com/thelarrybarker/status/1873216756585578777?t=XRUrSUzmCADikGkArfGXVA&s=35
👍63
قابلیت @ supports به ما این امکان رو داده تا بتونیم بررسی کنیم آیا یک ویژگی CSS توسط مرورگر پشتیبانی میشه یا نه.
مثلاً ممکنه یه مرورگر نتونه ویژگی‌های جدید رو درست نشون بده.

در صورتیکه از ویژگی پشتیبانی بشه استایل‌ مدنظر اعمال میشه ، و در غیر این صورت میتونیم استایل‌های دیگه برای مرورگرهای قدیمی‌تر تنظیم کنیم با این قابلیت.
(در تصویر مثالش درج شده کامل)

#CSS
@GoldenCodeir
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/codewithshripal/status/1855983339574030540?t=hLQU1LKcGWjs93IvrIrsWA&s=35
👍3🔥31
در لاراول، برای جلوگیری از اجرای هم‌زمان یک عملیات با استفاده از کش، از کدوم متود باید استفاده کنیم؟
Final Results
18%
Cache::getLock
26%
Cache::acquireLock
23%
Cache::setLock
34%
Cache::lock
👍82
پیشنهاد میکنم یه گوشه کنار داشته باشیدش که لازمتون میشه

(برگ تقلب SQL - JOIN)
#SQL
@GoldenCodeir

https://x.com/denicmarko/status/1876955314009858322?t=xSdqa7O7oRbJeF0AlfSuSA&s=35
👍5🔥1
هنگام پیاده‌سازی عملیات pagination ترتیب عملیات از اهمیت بالایی برخورداره، چون وقتی از توابعی مثل SUM، AVG یا COUNT استفاده میکنین، اگر این توابع قبل از paginate فراخوانی بشن، محاسبات برای تمام دیتاها انجام میشه.

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

#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/laravelbackpack/status/1881680653294752188?t=eRGdYYJK8pSEzU_lkpFc7Q&s=19
7👍4
در css قابلیته currentColor به ما این امکانو داده که بتونیم از رنگ متن برای باقیه بخش هامون مثل رنگ border یا background به راحتی استفاده کنیم !
بدونه اینکه مجبور بشیم رنگ رو دوباره بنویسیم.
(در تصویر کامل شرح داده شده👌🏾)

#CSS
@GoldenCodeir
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/codewithshripal/status/1882792377305432164?t=FGfvEwhgRi4bz7Xslwg47g&s=19
2👍2
لاراول 12در 6 اسفند عرضه خواهد شد

تیلور اعلام کرده که نسخه 12 لاراول در تاریخ 6 اسفند 1403 عرضه خواهد شد. به گفته او این اولین نسخه اصلی خواهد بود که بدون تغییرات مخرب (zero-breaking changes) عرضه می‌شود.

@DevTwitter | <Pouya Farshidnia/>
👍13🔥31
سلام دوستان عزیزم!

قالب ولزون (Velzon)، محبوب‌ترین قالب چندمنظوره جهان، اکنون برای فروش در دسترس است! 🎉

📅 منتشر شده در ۲۰ بهمن 1403

🔗 مشاهده پیش‌نمایش

با این قالب، سرعت، زیبایی و کارایی را در طراحی تجربه کنید! 🚀💡
👍31
Forwarded from Database Labdon
وقتی Cache بیشتر از این که کمک کنه، دردسر می سازه!

چند وقت پیش روی یه پروژه بزرگ کار می کردم که توش Redis برای کشینگ استفاده می کردیم. همه چیز خوب پیش می رفت تا اینکه یه روز، یه تغییر ظاهرا بی ضرر تو کد باعث شد کش درست Invalid نشه. نتیجه چی شد؟ کاربرا داده های قدیمی رو می دیدن، بعضیا نمی تونستن اطلاعاتشون رو آپدیت کنن، و پشتیبانی حسابی شلوغ شد!

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

مشکل Cache Inconsistency – وقتی دیتا تو کش و دیتابیس ناهماهنگ می شه و بعضی کاربرا داده های قدیمی می بینن.

مشکل Cache Stampede – همه درخواست ها همزمان به کش می رسن و فشار زیادی ایجاد می کنن.

مشکل TTL Misconfiguration – تنظیم اشتباه زمان اعتبار کش که باعث می شه یا دیتا زودتر از حد لازم حذف بشه یا تا مدت زیادی به روز نشه.


اون تجربه یه درس مهم بهم داد: کش چیزی نیست که فقط یه بار تنظیمش کنیم و فراموشش کنیم. باید یه استراتژی کش هوشمند داشته باشیم که همیشه بهینه بمونه.

<Hamed Farzanefar/>

https://news.1rj.ru/str/addlist/KpzXaiSpKENkMGM0
👍11🔥2
در لاراول یه متود داریم با نام ()lockForUpdate که برای جلوگیری از مشکلات Race Conditions استفاده میشه.

وقتی دو یا چند نفر میخوان بطور همزمان یک دیتا رو تغییر بدن، این متود باعث میشه فقط یکی ازونا بتونه دیتا رو تغییر بده و بقیه منتظر بمونن. این کار از یه سری اشتباها و تداخلهای ممکن پیشگیری میکنه. مثلاً وقتی میخوایم status یه سفارش رو تغییرش بدیم ، lockForUpdate() باعث میشه فقط یه نفر بتونه اونو در لحظه تغییر بده تا اشتباهی رخ نده.
#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/thelarrybarker/status/1889738111980118298?t=zQBNvx5a_46OyE2yF8Y4ng&s=35
5👍5
در MySQL میتونیم با استفاده از Table Partitioning جداول بزرگمونو به بخش‌های کوچکتر تقسیم کنیم.

فایدش چیه؟؟
این کار query performance رو خیلی میتونه بهینه تر کنه برامون.


مثلا اگه جدول فروشمون خیلی بزرگ باشه و دیتاش شامل تاریخ فروش باشه، میتونیم جدولمونو بر اساس سال پارتیشن‌بندی کنیم و خب اینطوری وقتی بخوایم دیتاهای یه سال خاصی رو جستجو کنیم، فقط بخش مربوط به همون یه سال بررسی میشه که خب باعث میشه فرایند جستوجو سرعتش بهینه تر بشه.
#Laravel
@GoldenCodeir
(به‌منبع و مثالش دقت کنید 👇🏾)
https://x.com/mmartin_joo/status/1890023138622116289?t=bgrX4CCiL7eaLwpI9CAdYw&s=35
8👍2🔥1
وقتی که نیاز داریم چندین کلاس رو از یک namespace وارد کنیم، معمولاً هر کدوم رو با use جداگانه درج میکنیم. اما میشه همه‌ی این کلاس هارو توی یک خط use کنیم!

چجوری؟
use Namespace\{ClassA, ClassB, ClassC};

مزایاش چیه؟؟
تمیزتر شدن و کمتر شدنه تعداد خطوط.
#PHP
#clean_code
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/laravelbackpack/status/1856313510768324670?t=qOO4OC7jKWvPITFKNSHOtA&s=1
7👍7🏆1
DevTwitter | توییت برنامه نویسی
لاراول 12در 6 اسفند عرضه خواهد شد تیلور اعلام کرده که نسخه 12 لاراول در تاریخ 6 اسفند 1403 عرضه خواهد شد. به گفته او این اولین نسخه اصلی خواهد بود که بدون تغییرات مخرب (zero-breaking changes) عرضه می‌شود. @DevTwitter | <Pouya Farshidnia/>
به گفته ی تیلور:

نسخه ی جدید از لاراول ۱۲ ، روز دوشنبه منتشر میشه که بیشتر بروزرسانی dependency ها و یه سری اصلاحات جزئی رو شامل میشه که در نتیجه تغییرات زیادی در کد برنامه‌ها ایجاد نخواهد کرد.

به همین دلیل بیشتر برنامه‌ها میتونن بدون اعمال تغییر در کد، ازین نسخه استفاده کنند. تمرکز این نسخه از لاراول بر روی بروزرسانی‌ dependency ها، سازگاری با نسخه‌های جدید PHP و معرفی ویژگی‌های جدید هستش.
همچنین هفته آینده ابزارهای جدیدی مانند laravel cloud و starter kit های جدید منتشر میشن.

#Laravel
@GoldenCodeir

https://x.com/taylorotwell/status/1892337776298787188?t=aGz1lPyzd2Wy6zXmwpgUJQ&s=35
👍9🔥31👎1
متود times در لاراول بهتون این امکان رو میده که یک کار رو چندین بار به راحتی بتونید تکرار کنید بدون نیاز به نوشتن for یا foreach. یعنی شما میگید که یک کار رو مثلاً ۵ بار انجام بده، و لاراول به طور خودکار اون کار رو ۵ بار براتون انجام میده.

کاربردش؟؟
مثلا در تست نویسی(ایجاد رکورد با تعداد مدنظر در دیتابیس)

چجوری کار میکنه؟
در هر تکرار، شماره‌ی تکرار (که در اینجا number$ هستش) به closure داده میشه و میتونین ازش برای انجام کاری مثل چاپ پیام یا پردازش دیتای مدنظر استفاده کنین.
#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/laravelbackpack/status/1896538556551884968?t=q22doKctgbLdIHAW0U24uA&s=35
👍6👏21
Forwarded from آموزش لاراول | LaravelHub (rwx-rwx-rwx)
📌 امروز وقتی وارد سرور ویندوزی خودم شدم، یه حس عجیبی داشتم... انگار یه چیزی درست نبود! کمی که دقت کردم، متوجه چند مورد مشکوک شدم و با خودم گفتم: "نکنه هک شدم؟!" 😨

اگه شما هم همچین حسی داشتید، این چک‌لیست امنیتی رو دنبال کنید تا بفهمید کسی به سرورتون نفوذ کرده یا نه!

۱. بررسی کاربران جدید
🔹 توی جستجوی ویندوز، عبارت User رو تایپ کنید.
🔹 به بخش Local Users and Groups برید.
🔹 نباید کاربر ناشناسی توی لیست باشه! اگه بود، فوراً حذفش کنید.

۲. چک کردن لاگ‌های ورود و خروج
🔹 دکمه‌های Win + R رو بزنید و تایپ کنید:
eventvwr.msc  

🔹 بعد برید به مسیر:
 Windows Logs > Security  

🔹 دنبال Event ID 4624 (ورود موفق) و Event ID 4625 (ورود ناموفق) بگردید.

اگه آی‌پی مشکوک دیدید، یعنی کسی غیر از شما وارد شده! 🚨
۳. بررسی اتصالات فعال به سرور
🔹 CMD رو باز کنید و این دستور رو بزنید:
netstat -an | findstr "ESTABLISHED"

🔹 اگه آی‌پی‌های ناشناس توی لیست بود، یعنی کسی هنوز به سرورتون وصله! 😱

۴. چک کردن پردازش‌های مشکوک⁧‏⁧
🔹 Task Manager رو باز کنید (Ctrl + Shift + Esc)
🔹 توی تب Processes ببینید برنامه‌ای هست که نباید باشه؟
🔹 اگه اسم عجیب‌وغریب داشت، فوراً End Task کنید!

۵. بستن دسترسی هکر
🔹 رمز عبور ادمین رو عوض کنید.
🔹 پورت 3389 (RDP) رو توی فایروال ببندید.
🔹 فقط آی‌پی‌های مطمئن رو مجاز کنید.
🔹 با آنتی‌ویروس یه اسکن کامل بزنید.

⚠️ اگه این مراحل رو انجام دادید و چیزی مشکوک پیدا کردید، یعنی سرورتون هک شده! سریعاً اقدام کنید و امنیت رو بالا ببرید.

📢 این مطلبو برای دوستات بفرست که امنیت سرورشون حفظ بشه! 🔐💻
#کدنویسی #امنیت #کشف_جرایم_رایانه_ای

🔥⚡️ کانال آموزشی LaravelHub
@LaravelHub
🔥54👍2
در لاراول میتونیم از متودهایی مثل throwIfStatus برای مدیریت خودکار خطاهامون در هنگام ارسال request به API استفاده کنیم.

این متودها به ما کمک میکنن تا اگه وضعیت response یک API بصورت خطا (مثلا ۴۰۰ یا ۵۰۰) باشه، خودش بطور خودکار یک exception مناسب ایجاد کنه و ما دیگه نیازی به بررسی دستی وضعیت response نخواهیم داشت.

(من فقط یکی ازین متودارو گفتم، مابقیش و چگونگیه استفاده ازین دسته متود ها در تصویر ذکر)
#Laravel
@GoldenCodeir
(به‌منبع و مثالش دقت کنید 👇🏾)
https://x.com/OussamaMater/status/1898800422476788177?t=sQquSOys96KZAxj7UNeTlQ&s=1
🙏2👍1
یه راه حل خیلی ساده برای بالا بردن performance برنامه‌هایی که با PHP نوشتیم:
یکی از مشکلاتی که در PHP وجود داره، مقیاس‌پذیری و سرعت پایین پردازش‌های همزمان هست. یکی از راه حل‌ها استفاده از FrankenPHP میتونه باشه.
در حالت عادی، وقتی برنامه PHP اجرا میشه، هر بار که درخواست جدیدی میاد، PHP باید اسکریپت‌ها رو از نو بارگذاری کنه. این فرآیند باعث میشه که زمان بارگذاری و پاسخ‌دهی افزایش پیدا کنه، مخصوصاً توی برنامه‌های سنگین یا با ترافیک بالا.
اما با FrankenPHP، این فرآیند تغییر می‌کنه. FrankenPHP به جای اینکه هر بار اسکریپت‌ها رو دوباره بازگذاری کنه، فقط یک بار فایل‌های PHP رو کش میکنه و از همون نسخه کش شده برای درخواست‌های بعدی استفاده می‌کنه. این یعنی توی درخواست‌های بعدی دیگه نیاز به اجرای دوباره نیست و PHP خیلی سریع‌تر جواب میده.

مزایاش چیه؟
سرعت بیشتر: با استفاده از FrankenPHP، کدهای PHP سریع‌تر اجرا می‌شن. این یعنی می‌تونید تعداد درخواست‌های بیشتری رو در یک زمان پردازش کنید و بار ترافیکی بالا رو بهتر مدیریت کنید.

برای میکروسرویس‌ها مناسبه: اگر دارید یک سیستم میکروسرویسی می‌سازید، FrankenPHP می‌تونه به شدت کمک کنه چون برای این نوع معماری ساخته شده و سرعت و مقیاس‌پذیری بالایی داره.

مقیاس‌پذیری راحت‌تر: FrankenPHP به شما این امکان رو می‌ده که به راحتی مقیاس پروژه‌هاتون رو افزایش بدید بدون اینکه از سرعت و عملکرد کم بشه.

پردازش همزمان: این پلتفرم کمک می‌کنه که پردازش‌های سنگین رو در پس‌زمینه انجام بدید و در عین حال از سرعت کلی سیستم کاسته نشه.

اگر برنامه‌‌ای دارید که باید با سرعت بالا به درخواست‌ها پاسخ بده یا نیاز به مقیاس‌پذیری بیشتر در محیط‌های ابری داره، یه سر به FrankenPHP بزنید. با Laravel Octane هم خیلی راحت میشه از FrankenPHP در لاراول استفاده کرد.

@DevTwitter | <Iman Rajabi/>
👍6🔥1
اگه بخواید سرعت پروژه‌تون (مثل زمان اجرای یک query) رو بررسی کنید و بخش‌های کند رو پیدا کنید تا بتونید بهبودش بدید، میتونید از کلاس Benchmark در لاراول استفاده کنید. 🔥

این کلاس به شما کمک میکنه تا مدت زمانی که یه عملیات خاص انجام میده رو بدست بیارید و قسمت‌هایی که نیاز به بهبود دارن رو شناسایی کنید.

(نحوه استفادش هم در تصویر شرح داده شده)
@GoldenCodeir
#Laravel
(به منبع و مثالش توجه کنین 👇🏾)
https://x.com/laravelbackpack/status/1900162434356432927?t=eC4AGkAMOS2InxZQSXWKkw&s=35
4👍3