نقطکس ‹ امنیت
امنیت و اعتماد
نقطکس با پول واقعی کار میکند. این صفحه میگوید دقیقاً چه کنترلهایی روی هویت، نشست، پول و رقابت اجرا میشود — و کدامها را عمداً منتشر نمیکنیم.
ورود و هویت
- بدون رمز عبور. ورود با کد پنجرقمی یکبارمصرف است؛ رمزی وجود ندارد که لو برود یا در جای دیگری دوباره استفاده شود.
- شمارهٔ موبایل ذخیره نمیشود. پیش از ذخیرهسازی با یک کلید مخفی هش میشود و فقط همان هش در پایگاه داده مینشیند؛ از محتوای پایگاه داده نمیتوان به شمارهٔ هیچ کاربری رسید.
- کد هم خام نگه داشته نمیشود. آنچه ذخیره میشود امضای کد است، نه خودش؛ و کد پس از ۵ دقیقه از اعتبار میافتد.
- حدس زدن کد بیفایده است. هر شماره ۵ تلاش در هر ۵ دقیقه دارد — در برابر ۱۰۰٬۰۰۰ حالت ممکن.
نشست و درخواستها
| کوکیها |
دو کوکی __Host- روی دامنهٔ API:
شناسهٔ نشست و توکن CSRF. پیشوند
__Host- یعنی کوکی به یک نام
میزبان قفل است و هیچ زیردامنهای نمیتواند آن را بنشاند.
|
|---|---|
| ارسال بینسایتی | SameSite=Strict؛ کوکی از هیچ سایت دیگری همراه درخواست نمیرود. |
| درخواستهای تغییردهنده | باید توکن CSRF و مبدأ مجاز داشته باشند، وگرنه پیش از رسیدن به منطق کسبوکار رد میشوند. |
| تکرار درخواست | هر درخواست تغییردهنده یک Idempotency-Key دارد؛ تکرار همان کلید، همان نتیجه را برمیگرداند نه تراکنش دوم. |
| قفل به دستگاه | نشست به «اثر انگشت» مرورگر گره میخورد؛ این اثر انگشت بهصورت هش نگه داشته میشود و قابل بازگشت به مشخصات دستگاه نیست. |
| طول عمر نشست | یک شبانهروز؛ پس از آن ورود دوباره لازم است. |
پول و دفتر کل
- حقیقت، دفتر کل است. موجودی هر کیف پول از جمع ردیفهای دفتر کل به دست میآید؛ عدد ذخیرهشده فقط یک نسخهٔ سریع است که با همان جمع مقایسه میشود.
- هر تراکنش جمعش صفر است. بدهکار خریدار، بستانکار مالک پیشین و بستانکار سامانه در یک تراکنش نوشته میشوند؛ یا هر سه ثبت میشوند یا هیچکدام.
- هیچ عدد اعشاری شناوری در مسیر پول نیست. همهٔ مبالغ عدد صحیح ریالاند، پس خطای گرد کردن انباشته نمیشود و دو محاسبهٔ یکسان همیشه یک عدد میدهند.
- سرریز، حادثه است نه سکوت. اگر محاسبهای از مرز عددی بگذرد تراکنش برمیگردد؛ هیچ مبلغی بیسروصدا نمیچرخد.
برداشت و کلید عبور
برداشت تنها مسیری است که پول از سامانه بیرون میرود، و سختگیرانهترین مسیر هم هست:
- هر درخواست با کلید عبور سختافزاری (WebAuthn) روی دستگاه خودتان امضا میشود؛ نشست باز بهتنهایی کافی نیست.
- از احرازگر شما فقط کلید عمومی ذخیره میشود — هیچ رازی از دستگاهتان نزد ما نیست.
- حداقل موجودی برای برداشت ۱٬۰۰۰٬۰۰۰ ریال است و حداکثر ۵ درخواست در ساعت پذیرفته میشود.
- تصمیم نهایی دربارهٔ برداشت را سرویس جداگانهای میگیرد که محدودیتهایش را از هیچ سرویس دیگری تحویل نمیگیرد و موجودی را خودش از دفتر کل میخواند.
وقتی برداشتی رد میشود، پیام فقط میگوید شرایط رعایت نشده و نمیگوید کدام شرط. این عمدی است: پیام دقیقتر، سقف کنترلهای ضدکلاهبرداری را به آزمونوخطا قابل کشف میکرد. پشتیبانی برای حساب خودتان توضیح میدهد.
رقابت همزمان روی یک خانه
وقتی صدها نفر همزمان یک مختصات را میزنند، سامانه بهجای قفل کردن ردیف، از کنترل همزمانی خوشبینانه استفاده میکند: هر خانه یک شمارهٔ نسخه دارد و فقط تراکنشی ثبت میشود که نسخهاش هنوز تازه باشد.
- یک تراکنش برنده است؛ بقیه رد میشوند بدون آنکه ریالی کسر شود.
- بازنده خطای
PIXEL_MOVEDرا با قیمت بهروزشده میگیرد و خودش دوباره تصمیم میگیرد. - هیچ جدولی قفل نمیشود، پس شلوغی یک نقطه، کل بوم را کند نمیکند.
سقفهای نرخ
سقفها هم از سوءاستفاده جلوگیری میکنند و هم به یک برنامهٔ خودکار
میگویند با چه آهنگی کار کند. پاسخهای دارای بودجه، سرآیندهای
RateLimit-Limit،
RateLimit-Remaining،
RateLimit-Reset و
RateLimit-Policy را با خود میبرند و
پاسخ رد شده، Retry-After را.
| تصاحب پیکسل | ۳۰۰ درخواست در دقیقه، برای هر کاربر |
|---|---|
| برداشت | ۵ درخواست در ساعت، برای هر کاربر |
| خواندن عمومی | حدود ۱۲۰ درخواست در دقیقه، برای هر نشانی IP |
| لبهٔ شبکه | حدود ۶۰۰ درخواست در دقیقه، برای هر نشانی IP |
| تلاش ورود | ۵ بار در هر ۵ دقیقه، برای هر شماره |
کنترلهای ضدکلاهبرداری دیگری هم روی برداشت و رفتار نشست اجرا میشود که اعدادشان منتشر نمیشود؛ انتشار سقفِ یک کنترل، خودِ کنترل را بیاثر میکند.
پرداخت و درگاه
- شارژ کیف پول از درگاه زرینپال انجام میشود؛ شمارهٔ کارت و اطلاعات بانکی هرگز به سرورهای ما نمیرسد.
- بازگشت مرورگر از درگاه، سند پرداخت نیست: تأیید را سرور مستقیماً از خود درگاه میگیرد و اگر مبلغ گزارششده با مبلغی که برایش درخواست باز شده یکی نباشد، پرداخت پذیرفته نمیشود.
- واحد پرداخت ریال است و همان عدد به کیف پول اضافه میشود.
- پرداخت ناموفق مبلغی کسر نمیکند؛ در صورت کسر، تا ۷۲ ساعت بازمیگردد.
گزارش آسیبپذیری
اگر ضعفی در نقطکس پیدا کردهاید، لطفاً پیش از انتشار عمومی به ما بگویید:
- نشانی گزارش: security@noghtex.ir
- در گزارش، مسیر بازتولید و زمان تقریبی مشاهده را بنویسید؛ اگر ممکن است، روی حساب آزمایشی خودتان.
- لطفاً داده یا حساب کاربران دیگر را لمس نکنید و آزمونهای تخریبی یا بارگذاری سنگین انجام ندهید.
- تا زمانی که وصله منتشر نشده، جزئیات را عمومی نکنید. گزارشهای سازنده جدی گرفته میشوند و از گزارشدهنده قدردانی میشود.
نقطکس نماد اعتماد الکترونیکی دارد؛ نشان آن در پایین همین صفحه است و در سامانهٔ رسمی قابل راستیآزمایی است. آنچه از دادهٔ شما نگه داشته میشود در سیاست حریم خصوصی آمده است.