संक्षिप्त उत्तर: कई स्थितियों में, विम इस तरह के हमले की चपेट में है (जब सम्मिलित मोड में पाठ चिपकाते हैं)।
अवधारणा के सुबूत
लिंक किए गए लेख को शुरुआती बिंदु के रूप में उपयोग करते हुए, मैं टेक्स्ट के मध्य भाग को छिपाने के लिए HTML स्पैन एलिमेंट्स और CSS का उपयोग करते हुए जल्दी से निम्न कोड के साथ एक वेब पेज बनाने में सक्षम था, ताकि केवल ls -la
आकस्मिक दर्शक को दिखाई दे (देखने के लिए नहीं) स्रोत)। नोट: ^[
पलायन चरित्र है और ^M
गाड़ी वापसी चरित्र है। स्टैक एक्सचेंज उपयोगकर्ता इनपुट को सुरक्षित करता है और सीएसएस का उपयोग करके सामग्री को छिपाने से बचाता है इसलिए मैंने अवधारणा का प्रमाण अपलोड किया है ।
ls ^[:echom "This could be a silent command."^Mi -la
यदि आप इन्सर्ट मोड में थे और इस पाठ को टर्मिनल विम (कुछ क्वालीफायर के साथ, नीचे देखें) में चिपकाया था, ls -la
तो आप देखेंगे लेकिन यदि आप :messages
कमांड चलाते हैं , तो आप छिपे हुए विम कमांड के परिणाम देख सकते हैं।
रक्षा
इस हमले से बचाव के लिए नॉर्मल मोड में रहना और इसका इस्तेमाल करना "*p
या पेस्ट करना सबसे अच्छा है "+p
। सामान्य मोड, जब में पी एक रजिस्टर से utting पाठ, (छिपा भाग सहित) पूरा टेक्स्ट चिपकाया जाता है। यह इन्सर्ट मोड में नहीं होता है (भले ही :set paste
) सेट किया गया हो।
ब्रैकेट पेस्ट मोड
विम के हाल के संस्करण ब्रैकेटेड पेस्ट मोड का समर्थन करते हैं जो इस प्रकार के कॉपी-पेस्ट हमले को कम करते हैं। सातो कैटसुरा ने स्पष्ट किया है कि "ब्रैकेटेड पेस्ट के लिए समर्थन विम 8.0.210 में दिखाई दिया, और हाल ही में संस्करण 8.0.303 (2 फरवरी 2017 को जारी किया गया) में तय किया गया था"।
नोट: मैं यह समझ के रूप में, कोष्ठकों के भीतर पेस्ट मोड के लिए समर्थन के साथ विम के संस्करणों चाहिए आप का उपयोग करते समय चिपकाने की रक्षा Ctrl- Shift- V(सबसे जीएनयू / लिनक्स डेस्कटॉप वातावरण), Ctrl- V(एमएस विंडोज), Command- V(मैक ओएस एक्स), Shift- Insertया एक माउस बीच-क्लिक करें।
परिक्षण
मैंने ल्यूबुन्टू 16.04 डेस्कटॉप मशीन से कुछ परीक्षण बाद में किया था लेकिन मेरे परिणाम भ्रमित और अनिर्णायक थे। मैं के बाद से महसूस किया कि इस वजह से मैं हमेशा का उपयोग किया है जीएनयू स्क्रीन , लेकिन यह है कि पता चला है स्क्रीन फिल्टर भाग सकें इस्तेमाल किया अनुक्रम / कोष्ठक पेस्ट मोड अक्षम (वहाँ एक है पैच लेकिन ऐसा लगता है यह एक समय था जब में प्रस्तुत की गई थी परियोजना को सक्रिय रूप से बनाए नहीं रखा जा रहा था)। मेरे परीक्षण में, अवधारणा का प्रमाण हमेशा काम करता है जब GNU स्क्रीन के माध्यम से विम चल रहा है, भले ही विम या टर्मिनल एमुलेटर ब्रैकेटेड पेस्ट मोड का समर्थन करता है।
आगे का परीक्षण उपयोगी होगा, लेकिन अब तक, मैंने पाया कि टर्मिनल एमुलेटर द्वारा ब्रैकेटेड पेस्ट मोड के लिए समर्थन मेरे प्रूफ ऑफ कॉन्सेप्ट को अवरुद्ध करता है - जब तक कि जीएनयू स्क्रीन प्रासंगिक एस्केप अनुक्रमों को अवरुद्ध नहीं करता है। हालांकि, उपयोगकर्ता नेनेनो रिपोर्ट करते हैं कि ब्रैकेट पेस्ट पेस्ट से बाहर निकलने के लिए एस्केप सीक्वेंस का सावधानीपूर्वक उपयोग किया जा सकता है।
ध्यान दें कि विम के अप-टू-डेट संस्करण के साथ, अवधारणा का प्रमाण हमेशा काम करता है अगर उपयोगकर्ता *
रजिस्टर से सम्मिलित करता है, जबकि इन्सर्ट मोड ( Ctrl- R*) लिखकर । यह GVim पर भी लागू होता है जो टाइप किए गए और पेस्ट किए गए इनपुट के बीच अंतर कर सकता है। इस मामले में, विम अपनी रजिस्टर सामग्री की सामग्री पर भरोसा करने के लिए उपयोगकर्ता को छोड़ देता है। इसलिए कभी भी इस विधि का उपयोग न करें जब एक अविश्वसनीय स्रोत से चिपकाया जाता है (यह कुछ ऐसा है जो मैं अक्सर करता हूं - लेकिन मैंने अब खुद को प्रशिक्षण देना शुरू नहीं किया है)।
सम्बंधित लिंक्स
निष्कर्ष
पाठ ( +
या *
रजिस्टरों से) चिपकाते समय सामान्य मोड का उपयोग करें ।
… या Emacs का उपयोग करें। मैंने सुना है यह एक सभ्य ऑपरेटिंग सिस्टम है। :)