GyaanSetu PHP

PHP، Laravel و WordPress.

32 articlesDeep, practical knowledge

نشت اطلاعات CoopCycle؛ افشای هزاران آدرس مشتری از طریق یک نقطه پایانی GET بررسی‌نشده

نبود یک عبارت امنیتی در نقطه پایانی مجموعه `/api/stores/{id}/addresses` به هر کاربر احراز هویت‌شده‌ی CoopCycle اجازه داد تا با فهرست کردن شناسه‌های فروشگاه‌ها، نام‌های کامل، آدرس‌های دقیق و کد‌های پستی را استخراج کند؛ این نقص امنیتی حریم خصوصی چندین تعاونی را به خطر انداخته است.

PHP · 3 min read

حذف نصب در PrestaShop می‌تواند تنظیمات سایر ماژول‌ها را از طریق جدول پیکربندی مشترک پاک کند

بررسی ۵۷ ماژول عمومی PrestaShop نشان داد که استفاده از کلیدهای پیکربندی بدون فضای نام (un-namespaced) و فراخوانی‌های بی‌دقت تابع Configuration::deleteByName باعث می‌شود که فرآیند حذف نصب یک ماژول، تنظیمات مربوط به افزونه‌های غیرمرتبط را نیز پاک کند و باعث سردرگمی فروشندگان شود.

PHP · 4 min read

حسابدار با دسترسی «فقط خواندنی» تا پیش از انتشار وصله 3.2.0 می‌توانست در Akaunting فاکتورها را لغو کند

یک کاربر با دسترسی فقط خواندنی می‌توانست از طریق یک درخواست GET، نقطه پایانی (endpoint) مستند نشده‌ی markCancelled را فراخوانی کند که باعث پاک شدن سوابق پرداخت و از بین رفتن ردپای حسابرسی می‌شد. این باگ ناشی از یک لیست مجاز (allowlist) بود که متدهای تغییر وضعیت را شامل نمی‌شد و در نسخه 3.2.0 اصلاح شد.

PHP · 2 min read

لاراول ۱۳ ویژگی‌های $fillable، $table و $casts را با Attributeهای بومی PHP جایگزین می‌کند

لاراول ۱۳ ویژگی‌های (Attributes) داخلی PHP را برای پیکربندی مدل‌ها معرفی می‌کند که به شما اجازه می‌دهد بدون ایجاد اختلال در کدهای موجود، ویژگی‌های سنتی $table، $fillable و $casts را با Annotationهای تایپ‌شده و مبتنی بر Reflection جایگزین کنید.

PHP · 4 min read

مسدود کردن wp-cron.php در سطح سرور برای صرفه‌جویی در PHP Workers و جلوگیری از افزایش ناگهانی مصرف CPU

تنظیم DISABLE_WP_CRON = true تنها مانع از ارسال درخواست loopback توسط خود وردپرس می‌شود؛ اما آدرس URL مربوط به wp-cron.php همچنان در دسترس باقی می‌ماند و می‌تواند مورد حملات مکرر قرار گیرد که منجر به اتمام PHP workers و ایجاد اختلال در سرویس (DoS) در هاست‌های اشتراکی می‌شود.

PHP · 4 min read

وصله امنیتی InvoiceShelf حفره‌ای با امتیاز ۸.۷ را که به هر مالک اجازه می‌داد سایر مستاجران را کنترل کند، برطرف کرد

این آسیب‌پذیری ناشی از اتصال مدل-مسیر (route-model binding) در لاراول و نبود بررسی محدوده مستاجر (tenant-scope check) بود که به یک مالک اجازه می‌داد هر شناسه کاربری را درخواست و اطلاعات کاربری را بازنویسی کند؛ این امر در عمل باعث انتقال حساب قربانی به شرکت مهاجم می‌شد.

PHP · 2 min read

توسعه‌دهنده مگنتو فراخوانی‌های دیتابیس را از ۳۰۰ به ۱ کاهش داد، اما محصولات ناموجود ناپدید شدند

جایگزین کردن ۳۰۰ فراخوانی مخزن (repository) برای هر محصول با یک کوئری کالکشن، تعداد کوئری‌ها را به شدت کاهش داد، اما فیلتر موجودی داخلی مگنتو تمام SKUهای با موجودی صفر را حذف کرد و باعث شد خریداران با کاتالوگی ناقص روبرو شوند.

PHP · 3 min read

TrendVidStream پس از وقوع هک، JWTهای ۳۰ روزه را با توکن‌های رفرش یک‌بارمصرف جایگزین کرد

یک SDK همکار، یک JWT ۳۰ روزه را به صورت متن ساده (plain text) ذخیره کرده بود که به مهاجم اجازه داد از خارج از کشور از آن استفاده مجدد کند. این رخنه امنیتی، TrendVidStream را مجبور کرد تا JWTهای طولانی‌مدت را با توکن‌های دسترسی ۱۵ دقیقه‌ای و توکن‌های رفرش یک‌بارمصرف جایگزین کند که در صورت استفاده مجدد، بلافاصله باطل می‌شوند.

PHP · 3 min read

اتلاف ساعت‌ها وقت توسعه‌دهندگان به دلیل صفحه تایید ایمیل وردپرس – و راه حلی در یک خط

از نسخه ۵.۳ وردپرس، صفحه تایید ایمیل مدیر هر چند ماه یک‌بار ظاهر می‌شود و باعث می‌شود اجرای خودکار و بدون نظارت Playwright منتظر دکمه‌ای بماند که هرگز نمایش داده نمی‌شود. با اضافه کردن یک بررسی سریع URL و کلیک بر روی گزینه «I’ll wait»، قطعیت در اتوماسیون دوباره برقرار می‌شود.

PHP · 3 min read

قانون فاکتور الکترونیکی سال ۲۰۲۶ کرواسی، برنامه‌های PHP را به بازنویسی ۶۲ قانون اعتبارسنجی وادار می‌کند

از ۱ ژانویه ۲۰۲۶، تمامی تراکنش‌های B2B در کرواسی باید از یک فایل Schematron نوشته شده با XSLT 2.0 عبور کنند، اما کتابخانه داخلی libxslt در PHP تنها از XSLT 1.0 پشتیبانی می‌کند. توسعه‌دهندگان برای حفظ روند صدور فاکتور، یا باید افزونه native Saxon-C را اضافه کنند، یا از یک سرویس خارجی استفاده کنند و یا ۶۲ مورد بررسی را مجدداً در PHP بازنویسی نمایند.

PHP · 4 min read

پلتفرم ویدئویی برای کاهش ده برابری جستجوهای بدون نتیجه، SQLite FTS5 را با OpenSearch جایگزین کرد

تیم توسعه، SQLite را به عنوان منبع اصلی داده‌ها حفظ کرد و یک نسخه کپی (replica) فقط-خواندنی از OpenSearch با قابلیت‌های مرتبط‌سازی لایه‌بندی‌شده و تنظیمات فازی (fuzzy) بهینه‌شده ایجاد کرد؛ این کار باعث کاهش ده برابری جستجوهای بدون نتیجه شد، در حالی که میانگین تأخیر (latency) همچنان زیر ۲۸ میلی‌ثانیه باقی ماند.

PHP · 3 min read

Cloudflare Workers مصرف CPU تولید تامنیل سایت ویدئویی را به صفر رساند

با انتقال فرآیند تولید تامنیل به Cloudflare Workers، این پلتفرم میزبانی ویدئو تمام بار پردازش تصویر را از سرورهای اصلی خود حذف کرد، به نرخ ۹۶ درصدی برخورد کش در لبه (edge cache hit rate) دست یافت و به‌طور مداوم پاسخ‌های تصویری زیر یک ثانیه را در سراسر جهان ارائه داد.

PHP · 3 min read

وقتی مردم کلمه «حسابرسی» را می‌شنوند، معمولاً حسابداران، صفحات گسترده و فصل مالیات را تصور می‌کنند. در نرم‌افزار، حسابرسی

وقتی مردم کلمه «حسابرسی» را می‌شنوند، معمولاً حسابداران، صفحات گسترده و فصل مالیات را تصور می‌کنند. در نرم‌افزار، حسابرسی کاملاً حوزه متفاوتی است. موضوع آن کمتر درباره تعادل...

PHP · 4 min read

در DailyWatch، پنل «ویدیوهای مرتبط» ما با یک پرس‌وجوی ساده SQLite شروع شد. این پرس‌وجو سه جدول را با هم ترکیب کرد و موارد هم‌پوشان را شمرد

در DailyWatch، پنل «ویدیوهای مرتبط» ما با یک پرس‌وجوی ساده SQLite شروع شد. این پرس‌وجو سه جدول را با هم ترکیب کرد، تگ‌های هم‌پوشان را شمرد و یک لیست رتبه‌بندی شده ارائه داد. برای یک کاتالوگ کوچک، این...

PHP · 3 min read