सिक्योरिटी टेस्टिंग की बुनियाद

Security testing जाँचती है कि system अपने data और functions को गलत इस्तेमाल से बचाता है: जानकारी सिर्फ़ सही लोग देख सकें (confidentiality), कोई उसे बिना अनुमति या बिना निशान छोड़े बदल न सके (integrity), और service उन लोगों के लिए चलती रहे जिनका उस पर हक़ है (availability)। Functional test पूछता है "क्या feature valid user के लिए काम करता है?"; security test पूछता है "जब कोई ऐसा व्यक्ति यह करने की कोशिश करे जिसे यह नहीं कर पाना चाहिए, तब क्या होता है?"।

एक payroll portal में functional test पुष्टि करता है कि कर्मचारी अपनी salary slip download कर सकती है। Security tests पुष्टि करते हैं कि वह URL में id बदलकर किसी सहकर्मी की slip download नहीं कर सकती, कि जो bank account उसने update किया वह payroll चलते समय सचमुच उसी का है, और कि payday पर failed logins की बाढ़ में भी portal चलता रहता है। ISTQB security testing को non-functional testing का एक type मानता है, जिसे ISO/IEC 25010 की security नाम की quality characteristic के आधार पर परखा जाता है।

यह क्यों ज़रूरी है

एक functional defect आम तौर पर एक user का एक काम बिगाड़ता है। एक security defect एक साथ हर user का data उजागर कर सकता है, और जो attacker उसे ढूँढता है वह bug report नहीं लिखता। लागत बाद में आती है: data breach, regulatory जुर्माना, खोए हुए ग्राहक और दबाव में emergency fix, और यह आम तौर पर उस test की लागत से कहीं ज़्यादा होती है जो कमज़ोरी पहले पकड़ लेता।

Tester के लिए security वह जगह है जहाँ रोज़ की आदतें सबसे ज़्यादा काम आती हैं: negative cases में सोचना, requirement को इस नज़र से पढ़ना कि वह क्या मना करती है, और system जो मान लेता है उस पर सवाल उठाना। कई security defects साधारण defects हैं, एक छूटी हुई जाँच, एक गलत default, एक ज़रूरत से ज़्यादा बोलने वाला error message, जिन्हें जानकार tester बिना ख़ास tools के पकड़ लेता है। यह lesson शब्दावली और बुनियादी नियम देता है; अगले lessons OWASP Top 10 से शुरू होकर मुख्य areas, authentication, sessions, access control, injection और बाकी, को एक-एक करके लेते हैं।

Security क्या बचाती है: confidentiality, integrity, availability

Security requirements टेस्ट करना आसान हो जाता है जब आप नाम दें कि हर requirement तीन properties में से किसे बचाती है। Confidentiality: जानकारी सिर्फ़ उन्हें दिखे जिन्हें देखने की अनुमति है। Integrity: data और functions सिर्फ़ authorised actors और authorised रास्तों से बदलें, और हर बदलाव trace हो सके। Availability: जब वैध users को service चाहिए तब वह मौजूद हो, स्वीकार्य performance के साथ। Security के लोग इन्हें CIA triad कहते हैं। ISO/IEC 25010:2023 confidentiality और integrity को security की sub-characteristics में गिनता है, non-repudiation, accountability, authenticity और resistance (attack के दौरान भी काम चलाते रहना) के साथ, और availability को reliability के नीचे रखता है, इसीलिए availability tests अक्सर performance के काम के साथ होते हैं।

हर property अपने test questions सुझाती है, और security test का expected result अक्सर यह होता है कि कुछ नहीं होता: request reject होती है, data वैसा ही रहता है, service चलती रहती है।

  • Confidentiality: क्या logged-out visitor, दूसरा कर्मचारी या नीचे की role salary slip पढ़ सकती है? क्या slip किसी URL, log, cache या error message से leak होती है?
  • Integrity: क्या bank account बिना re-authentication, tampered request या replay की गई request से बदला जा सकता है? क्या हर बदलाव के साथ दर्ज होता है कि किसने और कब किया?
  • Availability: failed attempts की एक बौछार में login page का क्या होता है, या जब "query my slip" form में 50 MB की file भेजी जाए? क्या एक user का दुरुपयोग सबको धीमा कर देता है?

Threats, vulnerabilities, attacks और risk

पाँच शब्द security की ज़्यादातर बातचीत संभालते हैं, और testers इन्हें आपस में मिला देते हैं। Asset वह है जिसे बचाना है: salary data, payroll run, कंपनी की साख। Threat किसी asset को नुक़सान पहुँचाने की संभावित वजह है, जिसे आम तौर पर उसके actor के साथ बताया जाता है: नाराज़ कर्मचारी, criminal group, automated bot, ग़लती करता हुआ ईमानदार administrator। Vulnerability वह कमज़ोरी है जिसका threat इस्तेमाल कर सकता है: छूटी हुई authorisation check, पुरानी library, password reset link जो कभी expire नहीं होता, public folder में छोड़ा गया backup। Attack किसी asset के ख़िलाफ़ vulnerability का इस्तेमाल करने की कोशिश है, और exploit वह technique या code है जिससे यह किया जाता है। Risk सफल attack की संभावना को उससे होने वाले नुक़सान की मात्रा से जोड़ता है, वही likelihood-और-impact वाली सोच जो risk-based testing में थी।

काम का बँटवारा इसी से निकलता है। Testers threats नहीं हटा सकते; bots मौजूद हैं चाहे portal कमज़ोर हो या न हो। Testers vulnerabilities attacker से पहले ढूँढते हैं और उन्हें इतने सबूत के साथ report करते हैं कि team risk आँक सके। नीचे जैसा एक छोटा note, feature की शुरुआत में लिखा हुआ, एक धुँधली चिंता को test conditions में बदल देता है:

Asset:          Salary slips (PDF)
Threat:         कोई कर्मचारी सहकर्मी की slip पढ़ ले
Vulnerability:  Slip URL में अंदाज़ा लगाने लायक id है, ownership check नहीं
Test condition: अपने session से दूसरे user की slip id पर GET -> 403 या 404, slip नहीं

Asset:          Salary वाला bank account number
Threat:         Stolen session वाला attacker salary दूसरे account में भेज दे
Vulnerability:  बदलाव बिना re-authentication या notice के save हो जाता है
Test condition: Account बदलें -> re-auth prompt, notice भेजा गया, audit record

Asset:          Employee accounts
Threat:         कोई bot leaked passwords आज़माता है
Vulnerability:  Rate limit नहीं; error text बताता है कि username मौजूद है या नहीं
Test condition: लगातार failures -> lockout या delay; हर user के लिए एक ही message

आज़माएँ: टेस्ट सिनेरियो जनरेटर आज़माएँ: नेगेटिव टेस्ट जनरेटर

देखने के चार तरीक़े: SAST, DAST, vulnerability scanning और penetration testing

Security testing कई approaches से होती है जो system को अलग-अलग तरफ़ से देखती हैं। हर approach ऐसी कमज़ोरियाँ पकड़ती है जो बाकी से छूट जाती हैं, इसलिए mature teams इन्हें मिलाकर इस्तेमाल करती हैं, और tester को पता होना चाहिए कि किसने क्या पकड़ा।

  • Static application security testing (SAST) source या compiled code को बिना चलाए analyse करती है, उस reviewer की तरह जो हर line पढ़ता है। यह code-level कमज़ोरियाँ जल्दी पकड़ती है, string concatenation से बना SQL query, hard-coded secret, और file और line बताती है। यह developer के editor (IDE) और CI pipeline में चलती है, अक्सर ऐसे findings देती है जो false positive निकलते हैं, और runtime configuration या components किस तरह deploy हुए हैं, यह नहीं देख पाती।
  • Dynamic application security testing (DAST) चलती हुई application को बाहर से टेस्ट करती है, जैसे user या attacker करता, requests भेजकर और responses जाँचकर। यह नाम आम तौर पर उन automated tools के लिए इस्तेमाल होता है जो application में crawl करके attack जैसी requests भेजते हैं, पर जब tester यही हाथ से करता है तब भी सिद्धांत वही है। यह वह पकड़ती है जो सचमुच exposed है: missing security header, बिना HttpOnly वाली session cookie, script reflect करने वाला input, बिना token जवाब देने वाला endpoint। इसे deployed test environment और test accounts चाहिए, जिस code तक यह नहीं पहुँचती वह छूट जाता है, और यह नहीं बता सकती कि कौन-सी line ठीक करनी है। QA tester browser या API client में हाथ से जो करता है, उसमें से ज़्यादातर इसी अर्थ में dynamic testing है।
  • Vulnerability scanning जो installed और exposed है, servers, frameworks, libraries, open ports, TLS settings, उसे ज्ञात vulnerabilities और आम misconfigurations के लिए जाँचती है। ज्ञात vulnerabilities CVE (Common Vulnerabilities and Exposures) identifiers के साथ publish होती हैं, जैसे Log4Shell नाम की Log4j कमज़ोरी के लिए CVE-2021-44228; software composition analysis (SCA) application की dependencies के लिए यही matching करती है। Scanning तेज़, व्यापक और repeatable है, एक अच्छा pipeline gate, पर यह सिर्फ़ पहले से ज्ञात कमज़ोरियाँ जानती है और आपके business logic के बारे में कुछ नहीं।
  • Penetration testing एक human-led, authorised attack simulation है, तय scope और समय के भीतर। Tester findings को जोड़ता है, verbose error और कमज़ोर password policy, यह दिखाने के लिए कि attacker सचमुच कहाँ तक पहुँच सकता है। NIST SP 800-115 इसे चार phases में बताता है: planning, discovery, attack और reporting। यह सबसे मज़बूत सबूत और एक system की एक समय पर सबसे गहरी coverage देता है, सबसे महँगा है, इसलिए अक्सर बड़ी release से पहले या साल में एक बार रखा जाता है।
SAST code पढ़ता है, DAST चलती हुई application को probe करता है, vulnerability scanning components को ज्ञात कमज़ोरियों से मिलाती है, और penetration test लिखित authorisation के तहत कमज़ोरियों को हाथ से जोड़ता है।

SASTstatic · code

Static application security testing

क्या देखता है:
Source या compiled code, बिना चलाए
क्या चाहिए:
Code और उसकी language का rule set
आम finding:
File X, line 112 में string concatenation से बना SQL
सीमाएँ:
Runtime configuration और deployment; कई false positives
कब और कौन:
IDE और CI, हर commit पर; findings developers के

DASTdynamic · चलती application

Dynamic application security testing

क्या देखता है:
चलती हुई application, बाहर से, जैसे attacker देखता
क्या चाहिए:
Deployed test environment और test accounts
आम finding:
बिना HttpOnly वाली session cookie; बिना token जवाब देता endpoint
सीमाएँ:
जिस code तक नहीं पहुँचता; fix करने वाली line नहीं बता सकता
कब और कौन:
Test environment में हर deployment; QA testers और DAST tools

Vulnerability scanningautomated · ज्ञात कमज़ोरियाँ

Components को ज्ञात कमज़ोरियों से मिलाती है

क्या देखता है:
Installed servers, frameworks, libraries, ports और TLS settings
क्या चाहिए:
Network access या dependency list, और current weakness database
आम finding:
Published CVE वाला framework version; TLS 1.0 अभी भी चालू
सीमाएँ:
Business logic, और वे कमज़ोरियाँ जो अभी किसी database में नहीं
कब और कौन:
Pipeline gate और scheduled runs; platform या security team

Penetration testइंसान चलाता है · authorised

Authorised attack simulation जो कमज़ोरियों को जोड़ती है

क्या देखता है:
तय scope के भीतर पूरा system, जैसे कुशल attacker देखता
क्या चाहिए:
लिखित authorisation, scope, time window और एक expert
आम finding:
Verbose error और कमज़ोर password policy मिलकर HR admin role तक ले जाते हैं
सीमाएँ:
Scope के बाहर की हर चीज़, और test के बाद जोड़ी गई हर चीज़
कब और कौन:
बड़ी release से पहले या सालाना; specialist team या vendor

QA tester browser या API client में हाथ से जो करता है, उसमें से ज़्यादातर dynamic testing है।

नियम: सिर्फ़ लिखित authorisation के साथ टेस्ट करें

Security test वही requests भेजता है जो attacker भेजता। Testing को attack से अलग करने वाली चीज़ permission है, intent नहीं: कई देशों में बिना authorisation किसी computer system तक पहुँचना आपराधिक अपराध है, भले ही कुछ नुक़सान न हुआ हो और मक़सद कमज़ोरी report करना रहा हो। "मैं सिर्फ़ टेस्ट कर रहा था" कहने से access authorised नहीं हो जाता। इसलिए नियम पूर्ण है: सिर्फ़ उन systems को टेस्ट करें जो आपके हैं या जिन्हें टेस्ट करने की लिखित अनुमति आपके पास है, और सिर्फ़ उस scope में जो वह अनुमति बताती है।

व्यवहार में लिखित अनुमति एक छोटा rules-of-engagement note है जिस पर पहली request से पहले सहमति होती है। अपनी team के test environment के लिए यह वह test plan हो सकता है जिसका security scope product owner ने sign off किया हो; production, किसी third-party service या client के system के लिए यह एक स्पष्ट document है। Bug bounty programme की published policy लिखित authorisation मानी जाती है, पर सिर्फ़ उन targets, techniques और आचरण के लिए जो उसमें लिखे हैं।

  • Test environments और वे test accounts इस्तेमाल करें जो आपने ख़ुद बनाए हों; किसी असली ग्राहक का data कभी test का victim न बनाएँ।
  • ऐसे benign payloads इस्तेमाल करें जो नुक़सान के बिना handling दिखा दें: एक single quote ' या <b> बता देता है कि input escape होता है या नहीं; बात साबित करने के लिए कुछ delete करने की ज़रूरत नहीं।
  • जब ऐसे data तक पहुँच जाएँ जो आपको नहीं दिखना चाहिए तो रुकें और report करें, और findings restricted ticket में रखें, असली personal data के screenshots के बिना। आगे जाना penetration tester का काम है, उसकी अपनी authorisation के तहत।
Rules of engagement: payroll portal, release 4.2 का security pass
Authorised by:  HR Systems प्रमुख (product owner), 2026-10-04
Targets:        सिर्फ़ https://payroll-test.example (test environment)
Out of scope:   production, payment provider, SMS gateway, कर्मचारियों के laptops
Accounts:       test users EMP-1001, EMP-1002, HR-ADMIN-01 (सिर्फ़ test data)
Allowed:        manual checks, header, cookie और auth checks, benign payloads
Not allowed:    denial of service, कई accounts पर password guessing,
                social engineering, असली employee data मिले तो उसकी copy बनाना
Window:         2026-10-05 से 2026-10-08, Riyadh समय 08:00 से 18:00
Contacts:       QA lead (findings), platform on-call (अगर कुछ टूटे)
Findings:       tracker में restricted ticket, असली data के screenshots नहीं

Worked example: payroll login पर पहला security pass

ऊपर के rules of engagement sign हो चुके हैं; आपके पास test environment, तीन test accounts और एक दोपहर है। पहला pass अंदर घुसने की कोशिश नहीं करता। यह बुनियादी controls को एक-एक property करके जाँचता है और सबूत दर्ज करता है।

  • Confidentiality: EMP-1001 से login करें, अपनी slip खोलें, URL /slips/48213.pdf नोट करें, फिर /slips/48214.pdf request करें, जो आपके दूसरे test account EMP-1002 की slip है। Expected: 403 या 404 और कोई slip नहीं; status दर्ज करें, content नहीं। बिना session दोहराएँ: expected 401 या login page पर redirect।
  • Session और configuration: login response के headers Cookie Analyzer और Security Header Analyzer में paste करें। Expected: session cookie में Secure, HttpOnly और कोई SameSite value हो, और Strict-Transport-Security, Content-Security-Policy, X-Content-Type-Options: nosniff और frame protection (X-Frame-Options या CSP का frame-ancestors directive) मौजूद हों; ये headers मिलकर browser से कहते हैं कि सिर्फ़ HTTPS इस्तेमाल करे, scripts सिर्फ़ तय जगहों से load करे, content type का अंदाज़ा न लगाए और page को किसी दूसरी site के frame में न दिखाए। हर missing item एक finding है, exact response के साथ।
  • Integrity: EMP-1001 के रूप में bank account बदलें। Expected: portal दोबारा password या one-time code माँगे, कर्मचारी को सूचित करे और audit record लिखे। फिर जाँचें कि कोई और यह बदलाव नहीं कर सकता: EMP-1001 के account के लिए वही change request EMP-1002 के token से भेजें, किसी API client से या API Authentication Tester से। Expected: 403 या 404, और दोबारा देखने पर EMP-1001 का account बिना बदलाव के। Tool मानता है कि आप जो token डालते हैं वह accept होना चाहिए, इसलिए वह इस rejection को fail दिखाता है; यहाँ यही rejection वह result है जो आप चाहते हैं, और उसकी जिन rows में इस्तेमाल लायक token नहीं है उन्हें 401 मिलना चाहिए।
  • Authentication और availability: EMP-1002 के लिए पंद्रह बार गलत password डालें। Expected: तय संख्या के बाद lockout या बढ़ती हुई देरी, और गलत password व न होने वाले user के लिए एक ही error text, ताकि login यह न बताए कि कौन-से usernames मौजूद हैं। इस बीच EMP-1001 सामान्य रूप से login कर सके: एक account की failures से सबके लिए service बंद नहीं होनी चाहिए।

आज़माएँ: सिक्योरिटी हेडर एनालाइज़र आज़माएँ: कुकी एनालाइज़र आज़माएँ: API ऑथेंटिकेशन टेस्टर

आम गलतियाँ

  • Security को सिर्फ़ penetration tester का काम मानना, जिससे सालाना test तक कुछ नहीं जाँचा जाता और हर finding release से एक हफ़्ता पहले आती है।
  • सिर्फ़ valid user और valid data से टेस्ट करना; security defects गलत user, missing token और tampered request वाले रास्तों पर रहते हैं।
  • Threat और vulnerability को मिला देना: "कोई passwords चुरा सकता है" threat है और टेस्ट नहीं हो सकता; "reset link कभी expire नहीं होता" vulnerability है और हो सकता है।
  • Scanner चलाना, उसके सौ findings बिना पढ़े file कर देना और product को tested मान लेना; scanner output को triage चाहिए और वह business logic के बारे में कुछ नहीं कहता।
  • ऐसा system, environment या third-party service टेस्ट करना जिसका नाम लिखित authorisation में नहीं था, सिर्फ़ इसलिए कि वह reachable था।
  • Finding document करते समय असली personal data या live session token किसी ticket, chat या online tool में paste कर देना।

QA का नज़रिया

असली team में security testing refinement में शुरू होती है: हर उस story के लिए जो login, roles, पैसे, personal data, uploads या किसी external integration को छूती है, पूछें कि story क्या मना करती है, न कि सिर्फ़ क्या allow करती है, और उसे negative acceptance criteria के रूप में लिखें। Developers से पूछें कि pipeline में कौन-से SAST और dependency scanners चलते हैं और उन्हें कौन triage करता है; product owner से पूछें कि test plan का security scope कौन sign करता है, और पिछला penetration test कब हुआ था और उसमें क्या मिला।

Security findings को साधारण defects की तरह दर्ज करें, दो extra fields के साथ: प्रभावित property (confidentiality, integrity या availability) और सबूत (secrets हटाकर exact request और response)। Severity impact से तय करें और दर्ज करें कि कमज़ोरी तक पहुँचना कितना आसान है, क्योंकि security teams findings को रैंक करते समय दोनों को तौलती हैं। Ticket restricted रखें, और fix के बाद उसी request से confirmation testing करें, फिर उन पड़ोसी जगहों पर regression tests जिन्हें fix ने छोड़ दिया हो सकता है, जैसे web page वाली जाँच API पर भी।

अभ्यास

चिंताओं की list को threats, vulnerabilities और test conditions में बाँटें

आपका काम

Payroll portal के product owner ने security awareness session के बाद आपको नीचे की list भेजी है। हर line के लिए तय करें कि वह threat, vulnerability या asset बताती है, हर vulnerability के लिए एक test condition लिखें और वह CIA property बताएँ जिसे वह बचाती है, और चिह्नित करें कि lesson के rules of engagement के तहत कौन-से items आप ख़ुद test environment में टेस्ट कर सकते हैं और कौन-से scanner या penetration tester के हैं।

सामग्री
1. Hackers हमारे कर्मचारियों की salaries बेच सकते हैं।
2. PDF export file name में employee number डालता है, और folder public है।
3. "Forgot password" वाला e-mail link एक बार इस्तेमाल होने के बाद भी काम करता है।
4. Portal एक web framework के तीन साल पुराने version पर चलता है।
5. 1,200 कर्मचारियों का payroll data।
6. किसी admin को धोखे से एक नकली bank account change approve करवाया जा सकता है।
7. Error pages पूरा stack trace print करते हैं, database के नाम समेत।
चरण
  1. हर line को label करें: asset, threat या vulnerability।
  2. हर vulnerability के लिए expected result के साथ एक test condition लिखें।
  3. हर test condition पर confidentiality, integrity या availability का tag लगाएँ।
  4. तय करें: आपके scope में, scanner के लिए, या penetration tester के लिए।
मॉडल उत्तर दिखाएँ
मॉडल उत्तर

Line 1 threat है (actor: criminals, मक़सद: data बेचना) और line 5 वह asset है जिसे वह निशाना बनाता है; दोनों में से कोई अकेले टेस्ट नहीं हो सकता। Line 6 भी threat है (किसी admin के ख़िलाफ़ social engineering), पर यह एक ऐसी vulnerability की ओर इशारा करती है जिसे आप टेस्ट कर सकते हैं: bank account का ऐसा बदलाव जो दूसरी जाँच के बिना लागू हो जाए।

Line 2, vulnerability, confidentiality: किसी दूसरे employee number की export file बिना session के और किसी दूसरे test user के session से request करें; expected 401, 403 या 404 और कोई file नहीं। आपके scope में।

Line 3, vulnerability, account की integrity: reset link इस्तेमाल करें, फिर उसे दोबारा खोलें; expected एक error और दूसरा reset नहीं। Test account के साथ आपके scope में।

Line 4, vulnerability अगर उस version में ज्ञात कमज़ोरियाँ हैं, संभवतः तीनों properties: framework version को ज्ञात vulnerabilities से मिलाना scanner का काम है। Test condition: pipeline का dependency scan इस framework के लिए तय severity से ऊपर कोई unresolved ज्ञात vulnerability report नहीं करता; आप पुष्टि करते हैं कि scan चलता है और उसके findings के owners हैं।

Line 6, threat के पीछे की vulnerability, integrity: HR-ADMIN-01 के रूप में EMP-1002 के लिए bank account change डालें और जाँचें कि वह तब तक pending रहे जब तक दूसरी जाँच पास न हो, यानी employee अपने session में पुष्टि करे या दूसरा approver मंज़ूरी दे; expected: तब तक paid account बिना बदलाव के, employee को सूचना, और audit record लिखा गया। आपके scope में; किसी असली admin को सचमुच धोखा देना social engineering है, जिसे rules of engagement मना करते हैं।

Line 7, vulnerability, configuration की confidentiality: invalid id से error trigger करें; expected एक generic error page और details सिर्फ़ server log में। आपके scope में; stack trace से attacker आगे बढ़ सकता है या नहीं, यह penetration tester का सवाल है।

अक्सर पूछे जाने वाले सवाल

Security testing functional है या non-functional?

ISTQB इसे non-functional testing में रखता है, जो ISO/IEC 25010 की security characteristic को परखती है। व्यवहार में कई security tests ठीक functional negative tests जैसे दिखते हैं, गलत user की request और expected 403, इसलिए classification यह बदलती है कि test कौन plan करता है, न कि आप उसे कैसे लिखते हैं।

क्या मुझे hacker होना या coding आना ज़रूरी है?

नहीं। QA tester जो ज़्यादातर security defects पकड़ता है, missing authorisation checks, कमज़ोर session cookies, verbose errors, missing headers, उनके लिए API client, browser और मना किए गए रास्ते को आज़माने की आदत चाहिए। Code पढ़ना SAST findings में मदद करता है; exploitation skills penetration testers की हैं।

क्या मैं practice के लिए कोई public website टेस्ट कर सकता हूँ जो मेरी नहीं है?

नहीं, जब तक वह bug bounty या responsible disclosure policy publish न करती हो जो साफ़ तौर पर इसकी अनुमति दे, और तब भी सिर्फ़ उस policy के भीतर। अपने test environment पर, ख़ुद install की गई जान-बूझकर vulnerable training applications पर, या Mutqan tools पर उन systems से copy किए गए headers और test-account tokens के साथ practice करें जिन्हें टेस्ट करने की आपको अनुमति है, किसी असली user के live token के साथ कभी नहीं।

Vulnerability scan और penetration test में क्या फ़र्क़ है?

Scan automated और व्यापक है: यह versions और configurations को ज्ञात कमज़ोरियों से मिलाता है और हर build पर चलता है। Penetration test manual, scoped और गहरा है: एक व्यक्ति कमज़ोरियों को जोड़कर, उन समेत जिन्हें कोई database नहीं गिनाता, किसी क़ीमती चीज़ तक पहुँचने की कोशिश करता है और बताता है कि कहाँ तक पहुँचा। Team को दोनों चाहिए; scan test की जगह नहीं लेता, और test हर दिन नहीं चलता।

संदर्भ

  • OWASP Web Security Testing Guide (WSTG)OWASP Foundationवेब एप्लिकेशन और API की सुरक्षा कमज़ोरियों को परखने की संदर्भ कार्यप्रणाली, एक-एक टेस्ट के रूप में।
  • NIST SP 800-115: Technical Guide to Information Security Testing and AssessmentNIST · 2008सुरक्षा मूल्यांकन की योजना और संचालन: समीक्षा, टार्गेट पहचान, कमज़ोरी की पुष्टि और रिपोर्टिंग।
  • ISTQB Certified Tester Foundation Level (CTFL) v4.0ISTQB · 2023सॉफ़्टवेयर टेस्टिंग का फ़ाउंडेशन पाठ्यक्रम: टेस्ट स्तर और प्रकार, टेस्ट डिज़ाइन तकनीकें, टेस्ट प्रबंधन और टूल।
  • ISO/IEC 25010:2023 — Systems and software Quality Requirements and Evaluation (SQuaRE) — Product quality modelISO/IEC · 2023उत्पाद गुणवत्ता मॉडल: कार्यात्मक उपयुक्तता, प्रदर्शन दक्षता, संगतता, इंटरैक्शन क्षमता, विश्वसनीयता, सुरक्षा, रखरखाव-योग्यता और लचीलापन।

Mutqan tools से अभ्यास करें

पेस्ट किए गए हेडर या किसी सार्वजनिक URL से HTTP सुरक्षा हेडर (CSP, HSTS, X-Frame-Options, Referrer-Policy, Permissions-Policy, COOP/CORP) को ग्रेड दें।

वैलिडेशन

Set-Cookie हेडर पार्स करें और Secure, HttpOnly, SameSite, Domain, Path, एक्सपायरी तथा साइज़ की सर्वोत्तम प्रथाएँ जाँचें।

वैलिडेशन

किसी endpoint पर Bearer, Basic, API-key और कस्टम-हेडर प्रमाणीकरण टेस्ट करें और अधिकृत बनाम अनधिकृत रिस्पॉन्स की तुलना करें।

API टेस्टिंग

किसी फ़ीचर के लिए functional, negative, security, usability और compatibility पहलुओं को कवर करने वाले उच्च-स्तरीय टेस्ट सिनेरियो जनरेट करें।

टेस्ट डिज़ाइन

फ़ॉर्म फ़ील्ड और API के लिए negative टेस्ट केस बनाएँ: खाली, null, ग़लत टाइप, बहुत लंबा, injection, अमान्य फ़ॉर्मेट।

टेस्ट डिज़ाइन

और गहराई से

इस topic में आपकी प्रगति

QA रोडमैप का हिस्सा