توسعه دهندگان انطباق را دوست ندارند. به طور سنتی، انطباق توسط تیمهای بررسی ریسک و امنیت اطلاعات رهبری میگردد. اجرای استانداردهای انطباق در سازمانها، توسط مهندسان نرمافزار انجام نمی شود. بنابراین وقتی کلمات "انطباق با PCI" به گوش میرسد، در ذهن بسیاری از توسعهدهندگان، محدودیتها، تنگناها و تغییرات شدید در روال کاری آنها که بر بهرهوری تأثیر میگذارد، تداعی میشود.
در حقیقت، انطباق با PCI نشان دهنده توجه بیشتر به امنیت اپلیکیشن و دادهها است که می تواند یک فریم ورک چند بخشی برای پرداخت بدون تقلب فراهم کند. در ادامه مقاله، انطباق PCI را از دیدگاه توسعهدهنده خواهید شناخت، سطوح PCI Compliance و معنای آنها بررسی می شود و نکات کاربردی در مورد چگونگی اطمینان از انطباق با PCI در سراسر SDLC ذکر می گردد.
انطباق با PCI یا PCI Compliance چیست و چرا توسعه دهندگان باید به آن اهمیت دهند؟
تصویر(1)
PCI مخفف Payment card industry به معنی "صنعت کارت پرداخت" است. PCI Compliance اغلب به عنوان خلاصه ای برای انطباق با استاندارد امنیت داده صنعت کارت پرداخت (PCI DSS) استفاده می شود. PCI DSS مجموعه ای از دستورالعمل های بسیار فنی را در مورد نحوه ایمن سازی داده های کارت اعتباری به بازرگانان و عاملین ارائه می دهد. هدف آن محافظت از مصرفکنندگان، بازرگانان، عاملین و صادرکنندگان کارت اعتباری در برابر سرقت دادهها است که منجر به تراکنشهای جعلی میشوند. در صورت سرقت داده ها، جریمههای سنگینی برای مشاغلی که اطلاعات کارت اعتباری را مدیریت میکنند اما از PCI DSS پیروی نمی نمایند، اعمال خواهد شد.
این استاندارد جهانی در سال 2001 از طریق همکاری بین شرکت های کارت اعتباری برای مبارزه با کلاهبرداری ایجاد شد. آخرین ورژن PCI DSS که توسط شورای استانداردهای امنیتی PCI (PCI SSC) منتشر شده، نسخه 4.0 است که در مارس 2022 منتشر شد.PCI DSS شامل چند کنترل کننده امنیتی است که رویههای فنی و عملیاتی را برای اجزای داخلی سیستم یا متصل به محیطهایی که با دادههای دارنده کارت تعامل دارند، پوشش میدهد. قبل از اینکه در مورد نقش توسعه دهندگان در انطباق با PCI و الزاماتی که باید با آنها آشنا باشید صحبت شود، سطوح انطباق PCI تجزیه و تحلیل خواهد شد.
سطوح سازگاری PCI
دستورالعمل های موجود در PCI DSS، درخواست های متفاوتی برای مشاغل با اندازه های مختلف دارند. به طور کلی، هرچه تراکنشهای بیشتری در اپلیکیشن شما پردازش شود، باید اقدامات دقیقتری را دنبال کنید. به همین دلیل، بسیاری از مشاغل کوچک که حجم زیادی از تراکنش کارت اعتباری دارند، ترجیح میدهند ابزارها و برنامههای پردازش پرداخت را به یک نرم افزار شخص ثالث قابل اعتماد برونسپاری کنند.
سطح انطباق PCI 1
سطح 1 انطباق PCI DSS بالاترین سطح سختگیری است و برای مشاغلی اعمال می شود که سالانه بیش از 6 میلیون تراکنش را پردازش می کنند و همچنین مشاغلی که نقض اطلاعات کارت اعتباری را تجربه کرده اند. برای رعایت PCI DSS سطح 1، مشاغل باید به موارد زیر دقت نمایند:
- گزارش سالانه انطباق (ROC) توسط حسابرس شخص ثالث - یک سیستم ارزیاب امنیتی واجد شرایط (QSA) راه اندازی کنید. ارزیابی شامل بررسی عمیق سیاستهای امنیتی سازمان، رویهها، معماری شبکه و نرمافزار، طراحی اپلیکیشن و سایر اقدامات حفاظتی حیاتی است.
- هر سه ماه یک بار، اسکن شبکه را توسط اسکنر تایید شده (ASV) انجام دهید.
سطح انطباق PCI 2
سطح 2 انطباق PCI DSS نسبت به سطح 1 سختگیری کمتری دارد و برای مشاغلی که بین 1 تا 6 میلیون تراکنش در سال پردازش می کنند، اعمال می شود. برای رعایت PCI DSS سطح 2، مشاغل باید:
- پرسشنامه سالانه خودارزیابی (SAQ) را تکمیل کنند – چک لیستی که حوزههای امنیتی مانند حفاظت از دادهها، مدیریت آسیبپذیری، مدیریت کنترل دسترسی و همچنین نظارت و آزمایش را پوشش میدهد.
- هر سه ماه، اسکن شبکه توسط یک ASV انجام دهند.
- فرم گواهی انطباق (AoC) را تکمیل کنند.
سطح انطباق PCI 3
سطح 3 انطباق PCI DSS برای مشاغلی اعمال می شود که بین 20000 تا 1 میلیون تراکنش در سال را پردازش می کنند. الزامات انطباق، با الزامات موجود در سطح انطباق PCI 2 یکسان است.
تصویر(2)
سطح انطباق PCI 4
در سطح 4، ابتدایی ترین سطح انطباق، برای مشاغلی اعمال می شود که کمتر از 20000 تراکنش در سال را انجام می دهند. برای رعایت PCI DSS سطح 4، سازمان ها موظف هستند:
- پرسشنامه سالانه خود ارزیابی (SAQ) را تکمیل کنند.
- در برخی موارد، یک اسکن شبكه که توسط یک ASV انجام می شود، انجام دهید.
- فرم گواهی انطباق (AoC) را تکمیل کنید.
نقش توسعه دهندگان در تضمین انطباق با PCI
انطباق با PCI فقط برای کارشناسان امنیت و انطباق نیست. توسعه دهندگان نیز نقش مهمی در اطمینان از ایمن ماندن اطلاعات کارت اعتباری هنگام ایجاد نرم افزار و پس از راه اندازی آن ایفا می کنند. به زبان ساده، انطباق با PCI به این معنی است که هنگام ایجاد نرم افزار، توسعه دهندگان باید با تیم های امنیتی و انطباق، همکاری نزدیک داشته باشند تا مطمئن شوند که جزئیات کارت اعتباری، چه در حین جابجایی و چه ذخیره سازی، ایمن هستند.
برای توسعه دهندگان، PCI ممکن است مانند قوانین دیگری که در مورد آنها شنیده اند، همچون GDPR (مربوط به حریم خصوصی داده های شخصی می باشد) یا HIPAA (که در مورد اطلاعات سلامتی است) باشد اما PCI تفاوت دارد زیرا شامل تمامی نکات مختص به ایمن نگه داشتن جزئیات کارت اعتباری می شود.
مهم است که توسعه دهندگان، این تفاوت را درک کنند. آنها باید قوانین خاص PCI را بدانند و هنگام نوشتن کد، طراحی نرم افزار یا راه اندازی ابزارهای جدید، از آنها پیروی نمایند. با فکر کردن به این قوانین، آنها میتوانند نرمافزاری بسازند که ایمن باشد و از قوانین پیروی کند، بدون اینکه کاهش سرعت داشته باشد یا خلاقیت را نادیده بگیرد.
بهترین روش های انطباق با PCI برای توسعه دهندگان
توسعه دهندگان، سطوح مختلفی از الزامات و پیش نیازهای مختلف در PCI DSS دارند و بهترین راه برای توضیح نقش آنها در حصول اطمینان از انطباق PCI، بررسی آن بر اساس سه هدف کلیدی برای مهندسان نرم افزار است:
- از داده های کارت اعتباری و دارنده کارت که توسط اپلیکیشن های شما پردازش و ذخیره می شوند، محافظت کنید.
- در حین جابجایی، اطلاعات پرداخت را ایمن نگه دارید.
- اطمینان حاصل کنید که سیستمهای اطلاعاتی و نرمافزار، در مقابل سوء استفاده های احتمالی از طریق نقص امنیتی، ایمن هستند.
برای هر کدام از اهداف فوق، ابزارهای مختلفی وجود دارد که برخی از آنها متناسب با نیازهای تیم های مهندسی نرم افزار طراحی شده اند. در ادامه، جزییات این اهداف مورد بررسی قرار می گیرد تا متوجه شوید که چگونه می توان به انطباق PCI دست یافت.
حفاظت از اطلاعات کارت اعتباری و دارنده کارت
حفاظت از داده های دارنده کارت در برابر عوامل مخرب، در قلب انطباق با PCI قرار دارد و توسعه دهندگان با چند روش می توانند این کار را انجام دهند. ابتدا باید بدانید که دقیقاً چه دادههایی باید تحت PCI DSS محافظت شوند.
تصویر(3)
اطلاعات دارنده کارت یا حساب، به مشخصات مربوط به مالک کارت و حساب اشاره دارد و شامل شماره حساب اصلی کارت، نام دارنده کارت، تاریخ انقضای کارت، کد تأیید کارت، پین و همچنین دادههای نوار مغناطیسی است.
برای محافظت از این داده ها، توسعه دهندگان باید موارد زیر را پیاده سازی کنند:
- تمام داده های ذکر شده را حین اجرای اپلیکیشن، در یک محیط امن نگهداری کنند.
- برای جلوگیری از اینکه داده های حیاتی حین اجرا در معرض عموم قرار گیرند، از ابزارهای حفاظتی مناسب استفاده نمایند.
- اجرای سیاست های سختگیرانه برای به حداقل رساندن یا حذف ذخیره سازی داده های پرداخت
- از ذخیره داده های احراز هویت در سیستم خودداری کنند.
- زمان نگهداری و ذخیره سازی داده ها را محدود نمایند.
- هرگز داده ها را در قالب یک متن ساده ذخیره نکرده و از رمزنگاری قوی استفاده کنند.
امنیت داده حین انتقال
شرط چهارم PCI DSS ایجاب می کند که تمام داده های دارنده کارت هنگام عبور از شبکه های عمومی با رمزگذاری قوی محافظت شوند. در یک محیط ابری، حتی ترافیک بین ریزسرویس ها از نظر فنی در یک شبکه عمومی منتقل می گردد.
توسعه دهندگان باید موارد زیر را در نظر داشته باشند:
- استفاده موثر از آخرین نسخه های پروتکل های TLS، SSL و SSH در اپلیکیشن هایی که توسعه می دهند.
- بروزرسانی منظم کلیدها و گواهیهای رمزنگاری
- اجتناب از ارسال اطلاعات کارت اعتباری به صورت متن ساده، حتی در ارتباطات داخلی.
- نظارت و ثبت انتقال داده ها برای شناسایی و توقف سریع فعالیت های غیرعادی.
- اطمینان حاصل کنید که اپلیکیشن های تلفن همراه نیز هنگام ارسال جزئیات کارت اعتباری، از رمزگذاری قدرتمند استفاده می کنند.
- آزمایش منظم اپلیکیشن ها برای یافتن نقاط ضعف در امنیت انتقال داده.
- تنظیم هشدار برای بررسی امنیتی انتقال اطلاعات شکست خورده.
مدیریت آسیب پذیری و کدگذاری ایمن
انطباق با PCI مستلزم این است که امنیت اپلیکیشن و کد در هر مرحله از SDLC اولویت بندی شده و مورد توجه قرار گیرد. شروع آن نیز با تجزیه و تحلیل نیاز نرم افزار برای الزامات امنیتی و بررسی محیط عملیاتی خواهد بود.
برای توسعه دهندگان، این موضوع نکات زیر را به همراه دارد:
- بهترین شیوه های PA-DSS (استانداردهای امنیت داده اپلیکیشن پرداخت) را برای توسعه نرم افزار اجرا کنید.
- مدیریت پچ خودکار
- تست پویا و استاتیک امنیت اپلیکیشن را در CI/CD pipeline (یکپارچهسازی و استقرار مداوم - این ویژگی با خودکارسازی مراحل توسعه نرمافزار، ارائه آن را سرعت میبخشد) خود ادغام کنید تا پس از شناسایی نقص های امنیتی، با توجه به شدت، آنها را برطرف نمایید.
- از نظارت و هشدارهای به موقع برای مسائل امنیتی مرتبط با توسعه دهنده استفاده کنید.
- تمام مراحل فرآیند توسعه اپلیکیشن و همچنین منابع خارجی به کار رفته (مانند فریم ورک ها یا کتابخانه ها) را برای بررسی آسانتر، ثبت نمایید.
- از کنترل نسخه با قابلیت بازگرداندن تغییرات، استفاده کنید.
جمع بندی
در صورت دستیابی به انطباق با PCI، آن را فراموش نخواهید کرد. همانطور که کسب و کار خود را توسعه می دهید و قابلیت ها و ویژگی های اپلیکیشن های خود را گسترش می دهید، به یاد داشته باشید که این تغییرات چه تاثیری بر وضعیت PCI Compliance شما خواهند گذاشت. همانطور که بالاتر ذکر شد، اصول انطباق PCI با سایر استانداردهای حریم خصوصی و امنیتی متفاوت نیست. آنها مجموعهای از دستورالعملهای فنی را برای اطمینان از امنیت اطلاعات کارت اعتباری و دارنده کارت اعتباری ارائه میکنند که برخی از آنها منعکسکننده چرخه عمر توسعه نرمافزار ایمن (SSDLC) هستند.