מדריך מלא לעמידה בתקן PCI DSS לאפליקציות מובייל

אפליקציות מובייל המעבדות תשלומים חייבות לעמוד בתקן PCI DSS; אחרת, רכישות מצטמצמות או חסומות לחלוטין. אנחנו מסייעים בסילוק פרצות קוד ומביאים את האפליקציה שלך לגרסת התקן העדכנית. הצוות שלנו מוביל פרויקטים מסוף אל סוף—מביקורת ועד מעבר בבדיקת QSA—תוך הבטחת הגנה אמינה על נתוני תשלום ותמיכה מתמשכת.

פיתוח ותמיכה בכל סוגי היישומים הניידים:

יישומים ניידים למידע ובידור
אפליקציות חדשות, משחקים, מדריכים, קטלוגים מקוונים, אפליקציות מזג אוויר, אפליקציות כושר ובריאות, אפליקציות נסיעות, אפליקציות חינוכיות, רשתות חברתיות ומסנג'רים, חידונים, בלוגים ופודקאסטים, פורומים, אגרגטורים
יישומים ניידים למסחר אלקטרוני
חנויות מקוונות, אפליקציות B2B, מרקטפלייסים, בורסות מקוונות, שירותי קאשבק, בורסות, פלטפורמות דרופשיפינג, תוכניות נאמנות, משלוחי מזון ומוצרים, מערכות תשלום.
יישומים ניידים לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, ניהול פרויקטים, כלים לצוותי מכירות, ניהול פיננסי, ניהול ייצור, ניהול לוגיסטיקה ומשלוחים, ניהול משאבי אנוש, מערכות ניטור נתונים
יישומים ניידים לשירותים אלקטרוניים
פלטפורמות מודעות מסווגות, בתי ספר מקוונים, בתי קולנוע מקוונים, פלטפורמות שירות אלקטרוניות, פלטפורמות קאשבק, אירוח וידאו, פורטלים נושאיים, פלטפורמות הזמנות ותזמון מקוונות, פלטפורמות מסחר מקוונות

אלה הם רק חלק מסוגי היישומים הניידים שאנו עובדים איתם, ולכל אחד מהם עשויים להיות מאפיינים ופונקציונליות ספציפיים משלו, המותאמים לצרכים ולמטרות הספציפיות של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
מדריך מלא לעמידה בתקן PCI DSS לאפליקציות מובייל
מורכב
מ- 1 שבוע עד 3 חודשים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    869
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1289
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

יישום נייד שמעבד תשלומים חייב לעמוד בתקן PCI DSS. סולקים דורשים אישור אבטחה, ולעתים קרובות הקוד מכיל פרצות: PAN בלוגים, היעדר הצמדת אישורים (certificate pinning), יכולת לצלם מסך עם כרטיס. הצוות שלנו עוזר להביא את היישום לגרסה העדכנית של התקן ולעבור ביקורת QSA עם עמידה מובטחת. עם ניסיון של למעלה מ-5 שנים ו-50+ פרויקטי אבטחה למובייל, אנו מבטיחים שהיישום שלך עומד בכל הדרישות.

למה PCI DSS קריטי ליישומי מובייל

מקור: PCI DSS הוא התקן של מועצת תקני האבטחה של תעשיית כרטיסי התשלום, חובה לכל תוכנה שמעבירה, מעבדת או מאחסנת נתוני כרטיסים. עבור יישומי מובייל, סעיף 6 (פיתוח מאובטח) וסעיף 4 (הצפנה בתעבורה) חשובים במיוחד. ללא עמידה בתקן, סולקים גדולים לא מאפשרים סליקה ישירה—רק פתרונות iFrame עם פונקציונליות מוגבלת.

הפרות נפוצות וכיצד לתקן אותן

אחסון PAN בלוגים

מפתח מוסיף Log.d("Payment", "Card: $cardNumber") לצורך ניפוי באגים. הנתונים מגיעים ל-logcat, קריא לכל יישום במכשיר אנדרואיד לא מאובטח. דרישת PCI DSS 3.3: PAN לא חייב להופיע בלוגים בטקסט רגיל. הפתרון הנכון הוא מיסוך PAN ורישום רק פעולות ללא נתוני כרטיס.

חוסר הגנה על המסך

אנדרואיד כברירת מחדל מאפשר צילומי מסך של כל Activity. במסך הזנת כרטיס, זו פרצה קריטית:

// Должно быть на любом экране с карточными данными
window.setFlags(
    WindowManager.LayoutParams.FLAG_SECURE,
    WindowManager.LayoutParams.FLAG_SECURE
)

ב-iOS באופן דומה, יש לכסות את הממשק בעת כניסה לרקע:

func applicationWillResignActive(_ application: UIApplication) { coverSensitiveContent() } 

הצמדת אישורים לא מוגדרת

התעבורה לשרת התשלומים מיורטת על ידי Charles Proxy או mitmproxy ללא מכשולים. PCI DSS 6.5.4 דורש הגנה מפני התקפות man-in-the-middle. יישום ב-iOS:

class PinnedURLSessionDelegate: NSObject, URLSessionDelegate {
    func urlSession(
        _ session: URLSession,
        didReceive challenge: URLAuthenticationChallenge,
        completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void
    ) {
        guard let serverTrust = challenge.protectionSpace.serverTrust,
              let certificate = SecTrustGetCertificateAtIndex(serverTrust, 0) else {
            completionHandler(.cancelAuthenticationChallenge, nil)
            return
        }
        let pinnedHash = "sha256/AbCdEfGhIjKlMnOpQrStUvWxYz123456789="
        let serverHash = certificateHash(certificate)
        if serverHash == pinnedHash {
            completionHandler(.useCredential, URLCredential(trust: serverTrust))
        } else {
            completionHandler(.cancelAuthenticationChallenge, nil)
        }
    }
}

זיהוי Root/Jailbreak

PCI DSS 6.4.3 ממליץ לזהות מכשירים שנפרצו. אנו משתמשים בשילוב: בדיקת // Должно быть на любом экране с карточными данными window.setFlags( WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE ) , Cydia, פקודת func applicationWillResignActive(_ application: UIApplication) { coverSensitiveContent() } , אי-התאמת חתימת תהליך. סולקים גדולים דורשים זאת דרך SDK.

למה טוקניזציה היא הכלי המרכזי ל-PCI DSS?

העיקרון המרכזי הוא לעולם לא לאחסן PAN. היישום עובד עם טוקן מספק התשלומים: Stripe class PinnedURLSessionDelegate: NSObject, URLSessionDelegate { func urlSession( _ session: URLSession, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void ) { guard let serverTrust = challenge.protectionSpace.serverTrust, let certificate = SecTrustGetCertificateAtIndex(serverTrust, 0) else { completionHandler(.cancelAuthenticationChallenge, nil) return } let pinnedHash = "sha256/AbCdEfGhIjKlMnOpQrStUvWxYz123456789=" let serverHash = certificateHash(certificate) if serverHash == pinnedHash { completionHandler(.useCredential, URLCredential(trust: serverTrust)) } else { completionHandler(.cancelAuthenticationChallenge, nil) } } } , CloudPayments /bin/bash, YooKassa su. טוקניזציה מצמצמת את היקף PCI DSS מ-SAQ D ל-SAQ A—זה פי 10 פשוט יותר ופי 20 פחות מאמץ ביקורת. קנסות על דליפת PAN יכולים להגיע ל-$500,000 לרבעון, וחיסכון בביקורת עקב היקף נכון יכול להגיע עד $3,000 (או יותר).

import StripePaymentSheet
var configuration = PaymentSheet.Configuration()
configuration.merchantDisplayName = "YourShop"
PaymentSheet.FlowController.create(
    paymentIntentClientSecret: clientSecret,
    configuration: configuration
) { [weak self] result in
    switch result {
    case .success(let flowController):
        self?.paymentSheetFlowController = flowController
    case .failure(let error):
        // обрабатываем
    }
}

נתוני הכרטיס עוברים ישירות ל-Stripe SDK; היישום מקבל PaymentMethod. PAN אף פעם לא נוגע בשרת שלך.

מסלול ביקורת ורישום

דרישת PCI DSS 10: רישום גישה לסביבת נתוני כרטיסים. עבור יישומי מובייל:

  • רישום כל תשלום מוצלח/כושל עם חותמת זמן, userId, PAN ממוסך (6 ספרות ראשונות + 4 אחרונות), סטטוס.
  • אחסון לוגים לפחות 12 חודשים, עם 3 חודשים נגישים מיידית.
  • הגנה על לוגים מפני שינוי (אחסון append-only).

מיסוך PAN בלוגים:

fun maskPan(pan: String): String {
    return pan.take(6) + "*".repeat(pan.length - 10) + pan.takeLast(4)
} // "4111111111111111" → "411111******1111"

מה זה היקף (Scoping) ולמה הוא נחוץ?

בחירת סוג SAQ משפיעה ישירות על היקף הביקורת. השוואה בין SAQ A ל-SAQ D:

פרמטר SAQ A SAQ D
היקף רק טוקניזציה CDE מלא
מספר דרישות 13 250+
מאמץ ביקורת 2-3 ימים 3-4 שבועות
עלות תיקון נמוכה גבוהה

טוקניזציה נכונה ומיקור חוץ של עיבוד כרטיסים (Stripe, CloudPayments) מאפשרים זכאות ל-SAQ A. החיסכון בביקורת יכול לעלות על עלות השינויים.

לחץ להרחבה: SAQ A עדיף על SAQ D פי 20 במאמץ ופי 10 בעלות.זה אומר שהצוות שלך יכול להתמקד בתכונות במקום בעומס תאימות.

התהליך שלנו: 5 צעדים לעמידה בתקן

שלב משך תוצאה
היקף יום אחד הגדרת גבולות CDE, בחירת סוג SAQ
ניתוח פערים 2-3 ימים רשימת אי-התאמות מול 12 דרישות
תיקון 1-3 שבועות תיקון פרצות: הצמדת אישורים, FLAG_SECURE, הצפנת אחסון מקומי
בדיקות חדירה 3-5 ימים ניתוח סטטי (MobSF) ודינמי, בדיקת הנדסה לאחור של בינארי
הכנה לביקורת QSA 2 ימים תיעוד, דוחות, המלצות

הצמדת אישורים שלב אחר שלב ב-iOS

  1. קבלת אישור השרת (DER).
  2. חישוב גיבוב SHA-256 של האישור.
  3. יצירת Token עם בדיקת גיבוב.
  4. הטמעת הגיבוב כקבוע בקוד.
  5. לכל בקשה, השוואת גיבוב השרת עם הגיבוב המוטמע.
  6. באי-התאמה, סיום החיבור.

רצף זה מבטיח הגנה מפני התקפות MITM. באנדרואיד, הצמדת אישורים קלה יותר דרך payment_method_id. פשוט הוסף קובץ XML ב-import StripePaymentSheet var configuration = PaymentSheet.Configuration() configuration.merchantDisplayName = "YourShop" PaymentSheet.FlowController.create( paymentIntentClientSecret: clientSecret, configuration: configuration ) { [weak self] result in switch result { case .success(let flowController): self?.paymentSheetFlowController = flowController case .failure(let error): // обрабатываем } } עם רשימת אישורים. עם זאת, לגמישות רבה יותר אנו משתמשים ב-OkHttp עם paymentMethodId.

מה כלול

  • ניתוח פערים מלא של הקוד והתשתית (זיהוי כל אי-ההתאמות)
  • יישום הצמדת אישורים ב-iOS ואנדרואיד עם טיפול בגרסאות ותצורה
  • הגנה על מסכי הזנת כרטיס (FLAG_SECURE, מניעת שכבות-על)
  • הגדרת טוקניזציה דרך Stripe/CloudPayments
  • יישום זיהוי root/jailbreak עם בדיקות מרובות
  • לוגים לביקורת ויישום מיסוך PAN
  • ייעוץ בנושא SAQ ומעבר ביקורת QSA

לוח זמנים משוער

ביקורת ותיקונים בסיסיים: בין 2 ל-4 שבועות. מחזור מלא עם בדיקות חדירה והכנה ל-QSA: עד 6 שבועות. העלות מחושבת באופן אישי לאחר ניתוח המצב הנוכחי.

הזמינו ביקורת מקדימה—נעריך את ההיקף ולוח הזמנים תוך יומיים. צרו קשר לייעוץ, ונעזור להכין את היישום שלכם להסמכה. אנו מבטיחים עמידה בתקן וביקורת חיצונית מוצלחת.

קבלו הערכה ליישום שלכם תוך יומיים—פנו אלינו.