امنیت ربات فروشگاهی بله: جلوگیری از اسکم، SQL Injection و حملات رایج (۱۴۰۵)
۱۵ خرداد ۱۴۰۵ - ۵ ژوئن ۲۰۲۶
ربات فروشگاهی شما هر روز در معرض حملات SQL Injection، دستکاری پرداخت، اسپم و حتی سرقت اطلاعات کاربران است. در این مقاله از مجموعه راهنمای جامع ربات بله، میخواهم یک چکلیست کامل امنیتی برای ربات فروشگاهی بله ارائه دهم. این موارد را در پروژه کلینیک دکتر رضوانی رعایت کردیم و تاکنون هیچ نفوذی نداشتهایم. اگر حتی یکی از این نکات را رعایت نکنید، ربات شما یک بمب ساعتی است. پس با دقت بخوانید و اجرا کنید.
۱. SQL Injection: قاتل خاموش رباتهای PHP
اگر در کوئریهای خود مستقیماً از ورودی کاربر استفاده کنید، یک هکر میتواند کل دیتابیس شما را پاک کند. هرگز از این روش استفاده نکنید:
// ❌ خطرناک
$name = $_POST['name'];
$pdo->query("INSERT INTO products (name) VALUES ('$name')");
// ✅ امن با Prepared Statement
$stmt = $pdo->prepare("INSERT INTO products (name) VALUES (?)");
$stmt->execute([$_POST['name']]);
همیشه از PDO و Prepared Statements با بایند کردن پارامترها استفاده کنید. این کار بهطور خودکار دادهها را فرار (escape) میکند و هرگونه کد SQL مخرب را خنثی میسازد.
۲. محافظت از Webhook و احراز هویت
هر کسی که آدرس Webhook شما را بداند، میتواند به آن درخواست جعلی بفرستد. باید مطمئن شوید که درخواست واقعاً از سمت بله آمده است.
- توکن تأیید: در زمان تنظیم Webhook، یک `secret_token` تعیین کنید و در سرور چک کنید.
- Header بررسی: بله یک هدر اختصاصی با توکن ارسال میکند.
$secret = 'YOUR_SECRET_TOKEN';
$header = $_SERVER['HTTP_X_BALE_SECRET'] ?? '';
if ($header !== $secret) {
http_response_code(403);
die('Unauthorized');
}
۳. CSRF و جلوگیری از کلیکهای مخرب
در Callback زرینپال یا عملیات حساس، باید از CSRF Token استفاده کنید. این توکن یکبار مصرف را قبل از هدایت به درگاه در دیتابیس ذخیره کنید و هنگام بازگشت بررسی کنید.
$csrf = bin2hex(random_bytes(32));
// ذخیره در دیتابیس برای این سفارش
// ارسال به زرینپال در callback_url?csrf=$csrf
// در verify.php
if ($_GET['csrf'] !== $order['csrf_token']) {
die('Invalid token');
}
۴. Rate Limiting: جلوگیری از اسپم و حملات Brute-Force
اگر کاربری بتواند بینهایت درخواست بفرستد، ربات شما از کار میافتد. یک محدودیت نرخ ساده با Redis یا دیتابیس پیاده کنید:
function checkRateLimit($chat_id, $max = 10, $window = 60) {
$key = "rate_{$chat_id}";
$count = apcu_fetch($key) ?: 0;
if ($count >= $max) {
sendMessage($chat_id, "تعداد درخواستها بیش از حد مجاز است. لطفاً کمی صبر کنید.");
exit;
}
apcu_inc($key, 1, $window);
}
۵. امنیت پرداخت و جلوگیری از اسکم مالی
- مبلغ تراکنش را از دیتابیس بخوانید، نه از درخواست کاربر.
- هر Authority فقط یکبار قابل Verify است. زرینپال آن را کنترل میکند.
- درگاه را در یک صفحه امن باز کنید و مطمئن شوید آدرس با `https://zarinpal.com` شروع میشود.
۶. چکلیست نهایی امنیت ربات بله
| بخش | اقدام ضروری |
|---|---|
| دیتابیس | استفاده از PDO + Prepared Statements |
| فایل حساس | قرار دادن config.php خارج از public_html |
| Webhook | اعتبارسنجی هدر و secret_token |
| پرداخت | خواندن مبلغ از سرور، استفاده از CSRF |
| فایلها | محدود کردن نوع و حجم آپلود |
| SSL | HTTPS اجباری برای Webhook و Callback |
۷. سوالات متداول
آیا ربات بله هدف حملات هکری قرار میگیرد؟
بله، هر سیستمی که به اینترنت متصل است در معرض خطر است. رباتهای فروشگاهی به دلیل تراکنش مالی، هدف جذابی هستند.
سادهترین راه برای امن کردن ربات چیست؟
استفاده از Prepared Statements و اعتبارسنجی تمام ورودیها. همچنین انتقال فایلهای حساس به خارج از پوشه public.
آیا شهبازیون امنیت ربات را تضمین میکند؟
بله، ما در خانه ربات و وب پروژهها را با رعایت همین استانداردها تحویل میدهیم و یک ماه پشتیبانی امنیتی رایگان ارائه میدهیم.
💬 نظرات کاربران
هنوز نظری ثبت نشده است. اولین نفری باشید که نظر میدهید!