तीनों तब होते हैं जब अविश्वसनीय input किसी भरोसेमंद संदर्भ में मिल जाता है। SQL injection parameterized queries से रोकें, string जोड़ने से कभी नहीं। XSS संदर्भ के हिसाब से output encoding से रोकें, कच्चे HTML injection से बचकर, जो HTML render करना ही पड़े उसे sanitize करके, और एक सख्त Content Security Policy से। CSRF को SameSite cookies और state बदलने वाली requests पर प्रति session token से रोकें, या ऐसे custom header से जिसे कोई cross site form सेट नहीं कर सकता।
इंटरव्यूअर यह क्यों पूछते हैं
यही वे bugs हैं जिनसे प्रोडक्ट breach होते हैं, तो इंटरव्यूअर बुनियादी काबिलियत के साथ परतदार बचाव की समझ चाहता है। वे सुन रहे हैं कि आप किसी library का नहीं, तरीके का नाम लेते हैं, आपको पता है कि CSRF सिर्फ cookie आधारित auth पर मायने रखता है, और आप validation तथा encoding को अलग काम मानते हैं। जो उम्मीदवार कहता है कि वह सारा input sanitize करता है, वह आमतौर पर संदर्भ वाला हिस्सा चूक रहा होता है।
अपना जवाब कैसे स्ट्रक्चर करें
- तीनों को एक ही शक्ल में रखें: अविश्वसनीय डेटा का भरोसेमंद संदर्भ तक पहुंचना।
- हर एक का मुख्य बचाव एक लाइन में दें।
- कम से कम एक के लिए दूसरी परत जोड़ें।
- बताएं कि framework के डिफ़ॉल्ट कहां पहले से बचा लेते हैं।
उदाहरण जवाब
मैं इन्हें एक ही शक्ल की तरह देखता हूं: यूज़र से आया डेटा ऐसी जगह पहुंच जाता है जहां उसकी व्याख्या होती है। SQL में व्याख्या करने वाला डेटाबेस है, तो parameterized queries या values bind करने वाला query builder इसे पूरी तरह हल कर देता है, और string जोड़ने की कोई स्वीकार्य वजह है ही नहीं। XSS में व्याख्या करने वाला ब्राउज़र है, और अहम बात यह है कि escaping संदर्भ पर निर्भर है। React आपके लिए text nodes escape करता है, तो जोखिम उन बचने के रास्तों में जमा हो जाता है: कच्चा HTML injection, ऐसी href values जो javascript URL हो सकती हैं, और वह सब जो सीधे DOM में लिखा जाता है। जहां प्रोडक्ट को सच में यूज़र का HTML चाहिए, जैसे rich text field, वहां मैं सर्वर पर allowlist वाली library से sanitize करता हूं और दूसरी परत के तौर पर सख्त CSP जोड़ता हूं ताकि कोई चूक अपने आप account पर कब्ज़ा न बन जाए। CSRF तभी लागू होता है जब ब्राउज़र credentials अपने आप जोड़ता है, तो SameSite को Lax करने से उसका ज़्यादातर हिस्सा मर जाता है, और फिर भी मैं state बदलने वाली हर चीज़ पर प्रति session token लगाता हूं। cookies पर httpOnly और Secure तो आदतन लगते ही हैं।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- SameSite Lax के बाद भी आप कहां खुले रहते हैं?
- stored, reflected और DOM आधारित XSS में क्या फर्क है?
- पहले से चल रहे ऐप पर Content Security Policy कैसे लागू करेंगे?
फुल स्टैक डेवलपर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें