लक्ष्य के साथ लिंक = "_ रिक्त" और rel = "noopener noreferrer" अभी भी असुरक्षित है?


108

मैं लोगों को यह सलाह देता हूं कि जब भी कोई target="_blank"एक लिंक का उपयोग किसी अलग विंडो में खोलने के लिए करे, तो उन्हें डाल देना चाहिए rel="noopener noreferrer"। मुझे आश्चर्य है कि यह मुझे Chrome में डेवलपर टूल का उपयोग करने से कैसे रोकता है, उदाहरण के लिए, और rel विशेषता को हटाता है। फिर लिंक पर क्लिक करें ...

क्या यह अब भी भेद्यता बनाए रखने का एक आसान तरीका है?


आप इस तरह के संरक्षण को किस तरह से मानते हैं (या इस मामले में) अनुदान नहीं होगा?

मैं ब्राउज़र एक्सटेंशन पर विचार कर रहा था जो DOM को मैनिप्युलेट कर सकता है।
मिरो जे।

1
फ़ायरफ़ॉक्स 79 यह स्वचालित रूप से करेगा (ठीक है, noopenerकम से कम, लेकिन जैसा कि नीचे बताया गया है, noreferrerबेमानी है): hacks.mozilla.org/2020/07/firefox-79
केव

जवाबों:


125

आप भेद्यता को गलत समझ सकते हैं। आप इसके बारे में और अधिक यहाँ पढ़ सकते हैं: https://www.jitbit.com/alexblog/256-targetblank---the-most-underestimated-vulnerability-ever/

अनिवार्य रूप से, rel="noopener noreferrer"लिंक को जोड़ना आपकी साइट के उपयोगकर्ताओं को उस साइट से बचाने में सक्षम करता है, जिस साइट को आपने ब्राउज़र को संभावित रूप से अपहरण करने से जोड़ा है (दुष्ट जेएस के माध्यम से)।

आप डेवलपर टूल के माध्यम से उस विशेषता को हटाने के बारे में पूछ रहे हैं - जो संभावित रूप से आपको (विशेषता के साथ छेड़छाड़ करने वाला व्यक्ति) भेद्यता को उजागर करेगा ।


9
noopener noreferrerबेमानी है, क्योंकि noreferrerकी कार्यक्षमता शामिल है noopenerhtml.spec.whatwg.org/multipage/links.html#link-type-noreferrer
mfluehr

1
यदि इसकी बेमानी क्यों Visual Studio कोड दोनों की आवश्यकता है?
मुही

66

उपयोगकर्ता के ध्यान को नए खुले टैब द्वारा हटा दिया गया है, जबकि target="_blank"उनके साथ लिंक , संदर्भ पृष्ठ को पृष्ठभूमि में स्वैप किए जाने के लिए असुरक्षित हैं । इसे रिवर्स टेबलपिंग के रूप में जाना जाता है :

उदाहरण दुर्भावनापूर्ण प्रवाह

संदर्भित पृष्ठ में संग्रहीत है window.opener, और एक दुर्भावनापूर्ण साइट के माध्यम से इसे संशोधित कर सकता है:

if (window.opener) {
   window.opener.location = "https://phish.example.com";
}

जोड़ना rel="noopener noreferrer"ठीक करता है सभी प्रमुख ब्राउज़रों में इस जोखिम।

ध्यान दें कि आप सैद्धांतिक रूप से जोड़ rel - तोड़ के माध्यम से ग्राहक-पक्ष को हटा सकते हैं ... लेकिन आप क्यों करना चाहेंगे? आप जो भी कर रहे हैं, वह जानबूझकर हमले के लिए खुद को कमजोर बना रहा है।

अन्य उपयोगकर्ता जो एक ही वेबसाइट पर जाते हैं (और अपने स्वयं के क्लाइंट-साइड कोड को संशोधित नहीं करते हैं) अभी भी सुरक्षित रहेंगे, क्योंकि सर्वर अभी भी काम करेगा rel="noopener noreferrer"। आपका इसे हटाना केवल आप पर लागू होता है।


बस भटकना, rel का क्या फायदा = "noopener noreferrer" मेरे आंतरिक अनुप्रयोग को देता है? यह एक ही आंतरिक डोमेन खोलता है, एक ही आंतरिक नेटवर्क में, 0 मौका है कि यह किसी बाहरी साइट का संदर्भ देगा। और अगर यह अभी भी फायदेमंद होगा, तो इसे सामान्य रूप से सभी लिंक से क्यों न जोड़ा जाए?
Dainius

3

एंकर टैग rel=”noopener”या rel=”noreferrer”गुण वेबसाइट की सुरक्षा में सुधार करते हैं, लेकिन कुछ लोग उन्हें अनदेखा करना चाहते हैं क्योंकि उन्हें लगता है कि वे उनकी वेबसाइट खोज इंजन अनुकूलन को प्रभावित करेंगे, लेकिन यह सिर्फ एक मिथक है। यह आपकी वेबसाइट के दर्शकों की गोपनीयता की रक्षा करता है और दुर्भावनापूर्ण कोड को फैलाने से बाहरी वेबसाइट को रोकता है।


8
यह अच्छा होगा यदि आप "मिथक" कथन के लिए कुछ स्रोत का हवाला दे सकते हैं। खासकर, noreferrerभाग के लिए।
मिरो जे।

1

के बारे में प्रकाशस्तंभ उत्तम आचरण आडिट की रिपोर्ट:

प्रदर्शन में सुधार और सुरक्षा कमजोरियों को रोकने के लिए किसी भी बाहरी लिंक को जोड़ें rel="noopener"या rel="noreferrer"

सामान्य तौर पर, जब आप उपयोग करते हैं target="_blank", तो हमेशा जोड़ें rel="noopener"या rel="noreferrer":

उदाहरण के लिए:

<a href="https://www.kaiostech.com/store/" target="_blank" rel="noreferrer">
  KaiStore
</a>
  • rel="noopener"नए पृष्ठ को window.openerसंपत्ति तक पहुंचने में सक्षम होने से रोकता है और यह सुनिश्चित करता है कि यह एक अलग प्रक्रिया में चलता है।
  • rel="noreferrer" एक ही प्रभाव है, लेकिन यह भी रोकता है Referer हेडर को नए पेज पर भेजने से ।

देखें आधिकारिक दस्तावेज और जानकारी के लिए।


क्या आप दोनों को जोड़ सकते हैं?
धन्य हो

-1

यदि डेवलपर कंसोल के बारे में चेतावनी दिखा रहा है noopener noreferrer, तो सुनिश्चित करें कि आप दोनों को जोड़कर noopenerऔर noreferrerरिले में हैं। लिंक कुछ इस तरह होना चाहिए:

<a href="www.google.com" target="_blank" rel="noopener noreferrer" />

यह उस प्रश्न को संबोधित नहीं करता है जो पूछा गया था।
टायलरएच
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.