
Next.js (CVE-2024-34351) में सर्वर-साइड अनुरोध जालसाजी (SSRF) भेद्यता का शैक्षिक डेमो, चरण-दर-चरण शोषण और शमन उदाहरणों के साथ।
यह रिपॉजिटरी किसी एक या अधिक meetup(s) को प्रस्तुत करने के लिए सहायक सामग्री के रूप में काम कर सकती है। क्रम इस प्रकार है...
यह कार्य मुख्य रूप से दो स्रोतों पर आधारित है:
1-csr-load-data vanilla react SPA loading data[!IMPORTANT] CSR (Client-Side Rendering): React कोड ब्राउज़र में भेजा जाता है, जो DOM में सम्मिलित होने वाली सामग्री उत्पन्न करता है।

cd 1-csr-load-data
npm start

2-csr-router vanilla react SPA रूटिंग[!IMPORTANT] पहली बार पेज लोड होने के बाद, उसी वेबसाइट पर अन्य पेजों पर नेविगेट करने के लिए JavaScript का उपयोग करके पेज के कुछ भागों को पुनः रेंडर किया जाता है, बिना पूर्ण पेज रिफ्रेश की आवश्यकता के।
cd 2-csr-router
npm start

3-rsc-load-data React Server Components (Next.js impl) डेटा लोड करना[!IMPORTANT] React कम्पोनेंट जो केवल सर्वर पर चलने के लिए लिखे गए हैं, ब्राउज़र में नहीं।

cd 3-rsc-load-data
npm run build
npm run start

4-rsc-router React Server Components (Next.js impl) रूटिंग[!IMPORTANT] कम्पोनेंट केवल सर्वर पर निष्पादित होते हैं। डिफ़ॉल्ट व्यवहार स्थैतिक रेंडरिंग है: कम्पोनेंट बिल्ड समय पर निष्पादित होते हैं।
cd 4-rsc-router
npm run build
npm run start

5-SSR SSR Server Side Rendering[!IMPORTANT] SSR का अर्थ है क्लाइंट कम्पोनेंट्स को सर्वर पर प्रीरेंडर करना। React कोड अनुरोध के समय चलता है। परिणाम भविष्य के अनुरोधों के लिए कैश किया जा सकता है।
सर्वोत्तम अभ्यास: 'use client'; कम्पोनेंट्स को कम्पोनेंट ट्री में जितना संभव हो उतना नीचे परिभाषित करें।
[!IMPORTANT] "React में, 'हाइड्रेशन' वह प्रक्रिया है जिसके द्वारा React उस मौजूदा HTML से 'जुड़ता' है जो पहले से सर्वर वातावरण में React द्वारा रेंडर किया गया था। हाइड्रेशन के दौरान, React मौजूदा मार्कअप पर इवेंट लिसनर जोड़ने और क्लाइंट पर ऐप को रेंडर करने का प्रयास करेगा। पूरी तरह से React में बने ऐप्स में, आप आमतौर पर केवल एक 'रूट' को, शुरुआत में एक बार पूरे ऐप के लिए हाइड्रेट करेंगे।"
https://react.dev/reference/react-dom/client/hydrateRoot
https://www.gatsbyjs.com/docs/conceptual/partial-hydration/
cd 5-ssr
npm run build
npm run start

6-pages-router-ssg (Next.js impl)[!IMPORTANT] SSG (Static Site Generation) पेजेज़ राउटर का उपयोग करके: React कोड तब चलता है जब आप अपना एप्लिकेशन बनाते हैं, और उत्पन्न आउटपुट स्थैतिक होता है।
cd 6-pages-router-ssg
npm run build
npm run start
7-pages-router-isr (Next.js impl)[!IMPORTANT] ISR (पेजेज़ राउटर का उपयोग करके): "Next.js आपको अपनी साइट बनाने के बाद स्थैतिक पेज बनाने या अपडेट करने की अनुमति देता है। इंक्रीमेंटल स्टैटिक रीजनरेशन (ISR) आपको पूरी साइट को पुनर्बिल्ड किए बिना, प्रति-पेज आधार पर स्टैटिक-जनरेशन का उपयोग करने में सक्षम बनाता है। ISR के साथ, आप लाखों पेजों तक स्केल करते हुए स्टैटिक के लाभों को बनाए रख सकते हैं।"
cd 7-pages-router-isr
npm run build
npm run start
"अनुरोध के समय डेटा पुराना हो सकता है"
https://vercel.com/blog/nextjs-server-side-rendering-vs-static-generation
https://react.dev/reference/rsc/server-actions
...
8-ssrf-14.1.0https://www.assetnote.io/resources/research/digging-for-ssrf-in-nextjs-apps
14.1.1 से कम हैredirect(/blog/${inputValue});स्रोत: https://www.assetnote.io/resources/research/digging-for-ssrf-in-nextjs-apps