- DontFuckWithPaste एक Google Chrome extension है, जो web applications द्वारा input fields में copy और paste को रोकने वाले व्यवहार को हटाता है
- प्रोजेक्ट का मानना है कि email address या 1Password जैसे tools से लिए गए values को हाथ से टाइप करवाना उल्टा गलत input की संभावना बढ़ाता है
- यूज़र extension icon दबाकर site को blacklist में जोड़ सकते हैं, और auto-generated pattern को जरूरत हो तो edit करके save कर सकते हैं
- जब extension current tab में active होता है, तो icon नीला हो जाता है, जिससे tab-wise active/inactive status देखा जा सकता है
- Version 2 में extension को केवल problematic sites पर चलाने के लिए
tabspermission इस्तेमाल होती है, और Chrome का permission description असल behavior से ज्यादा व्यापक और डरावना लग सकता है
Copy-paste blocking हटाने वाला Chrome extension
- DontFuckWithPaste एक Google Chrome extension है, जो web applications द्वारा यूज़र के copy और paste को रोकने वाले व्यवहार को हटाता है
- input field में email address गलत paste करने की जिम्मेदारी यूज़र की है, और 1Password जैसे tools से values copy-paste करना हर character को हाथ से type करने की तुलना में कम errors वाला हो सकता है
- extension का उद्देश्य copy-paste events को रोकने वाली websites की restrictions को सरलता से हटाना है
इस्तेमाल करने का तरीका
- किसी site को blacklist में जोड़ने का सबसे आसान तरीका extension icon पर click करना है
- इसके बाद auto-generated pattern को जरूरत हो तो edit करें और
"Save"दबाएं - save करने के बाद अगर extension icon नीले रंग में दिखे, तो current tab में extension active है
Version 2 में बदलाव और permissions
- Version 2 extension का बड़ा update है, और इससे extension को केवल उन sites पर चलाना आसान हो गया है जो copy-paste events को गलत तरीके से handle करती हैं
- यह tab-wise extension active है या inactive, यह देखने के लिए visibility भी देता है
- active tab बदलने का समय जानने के लिए
tabspermission की जरूरत होती है- Chrome इस permission को
"can read and change all your data on websites you visit"के रूप में explain करता है - README बताता है कि यह description डरावना लग सकता है, लेकिन extension असल में ऐसा behave नहीं करता
- Chrome इस permission को
- open source project होने की वजह से users code पढ़कर देख सकते हैं कि extension कैसे काम करता है और user data के साथ क्या नहीं करता
- Version 2 upgrade के बारे में और जानकारी wiki page पर देखी जा सकती है
1 टिप्पणियां
Hacker News की राय
यूज़र इनपुट रोकने से उल्टा application security खराब होती है। जब पासवर्ड कॉपी करना संभव नहीं रहता, तो शुरुआत में अच्छे पासवर्ड इस्तेमाल करने वाले यूज़र भी टाइपिंग की झंझट की वजह से कम जटिल पासवर्ड पर आ जाते हैं।
जटिल इनपुट अनिवार्य करने के बाद, यूज़र को सही तरह से generate की गई value paste न करने देना user experience भी खराब कर देता है।
कुछ खास characters अनिवार्य कराने वाले system भी समस्या हैं। “uppercase, number, special character ज़रूर शामिल करें” जैसे rules के बजाय, सामान्य characters ही हों तो भी लंबा पासवर्ड generate करना बेहतर लगता है। क्योंकि कभी-कभी उसे खुद टाइप करना पड़े तो यह आसान होता है।
इससे भी खराब है allowed special characters की किस्में तक सीमित कर देना। पहले से generate किए गए पासवर्ड में से किसी खास character को हटाने के लिए फिर से edit करना पड़ता है।
इसके बजाय password strength दिखाकर “और ज़्यादा characters इस्तेमाल करें, जैसे आप चार शब्द इस्तेमाल कर सकते हैं” जैसी guidance देना क्या इतना मुश्किल है?
यूज़र उस interface के special rules अक्सर इस्तेमाल नहीं करते, इसलिए उन्हें याद न रखने की संभावना ज्यादा है, और अंत में वे पहले clipboard copy ही आज़माएँगे।
यूज़र को उनके familiar functions इस्तेमाल करने देने पर आम तौर पर सहमति है, लेकिन credentials copy-paste करने की आदत होने पर वे phishing के प्रति ज्यादा vulnerable हो जाते हैं।
Firefox और Chrome के built-in password manager मिलती-जुलती sites में गलती से credentials नहीं डालते, लेकिन यूज़र ऐसा कर सकते हैं।
समस्या यह है कि यह करने के लिए कोई alternative permission model नहीं है। मैंने कुछ extensions इस्तेमाल किए हैं, और अक्सर सभी pages पर full read/write access के बिना वे कुछ नहीं कर पाते।
उदाहरण के लिए, एक extension है जो image पर right-click करके उसे -90/+90/180 degrees rotate करता है। चाहिए बस इतना कि browser image tag होने पर बता दे, लेकिन ऐसा option नहीं है।
अंत में या तो code में page-wise allowlist डालनी पड़ती है, या user से हर page के लिए allowlist बनवानी पड़ती है, या user जिन सभी webpages पर जाता है उन पर full read/write permission मांगनी पड़ती है।
author जरूरी permissions और उनके कारणों को जितना हो सके transparent तरीके से बता रहा है, और वजह भी ऐसी है जो author के control में नहीं है; इस पर प्रतिक्रिया कुछ ज्यादा ही cynical लगती है।
तकनीकी रूप से बात सही है। बाद में वह कुछ भी कर सकता है।
फिर भी इस attitude की आलोचना करने के बजाय इसे acknowledge किया जाना चाहिए।
समझ नहीं आया कि original post ने original के बजाय fork को link क्यों किया। original में alternative के तौर पर इस्तेमाल किया जा सकने वाला bookmarklet version है।
https://github.com/jswanner/DontF-WithPaste?tab=readme-ov-fi...
extension source download करने के बाद Chrome extension developer mode में “Load unpacked extension” इस्तेमाल करें तो उस समस्या से बचा जा सकता है। तब आप आश्वस्त हो सकते हैं कि extension चुपके से नहीं बदलेगा।
हालांकि मैं इस extension को सभी sites की permission नहीं देता, सिर्फ site-wise enable करके इस्तेमाल करता हूँ।
इसलिए browser extensions install और update करने के लिए system package manager इस्तेमाल करता हूँ।
अगर package repository में जरूरी browser extension नहीं है, तो खुद package contribute करता हूँ और continuous verification व maintenance की जिम्मेदारी लेता हूँ।
इस समस्या को bypass करने के लिए आम तौर पर Mac पर URL field जैसी जगह में paste किए गए text को drag and drop कर देता हूँ।
लेकिन security के नाम पर paste रोकना, हर जगह लागू होने वाले बेहद छोटे timeout के ठीक बाद आने जितना ही सबसे खराब किस्म का बेवकूफी भरा काम है।
काश ऐसे फैसले लेने वालों से सीधे मिल पाता।
एक ऐसी website पर 30-minute auto logout लागू करने के लिए मजबूर किया गया था जहाँ sensitive data होने की संभावना कम थी। वजह यह थी कि external penetration testing firm ने छोटा timeout न होने को issue mark कर दिया था।
customer को passed penetration test results दिखाने के लिए सभी findings का पालन करना ही पड़ा। सभी जानते थे कि यह बेवकूफी भरी मांग है, लेकिन management ने implementation के अलावा कोई विकल्प नहीं दिया।
कुछ समय पहले login.gov पर झेला गया एक बेवकूफी भरा flow था। password manager के पास saved login था और मुझे याद नहीं था, लेकिन वह काम कर गया। इसके बाद site ने authenticator app code मांगा, जबकि authenticator apps में login.gov entry नहीं थी।
“sign in another way” button दबाया तो वह दूसरा तरीका भी authenticator app इस्तेमाल करना ही था। “can't get a code?” दबाया तो बताया कि account delete करना होगा।
account delete दबाने पर email भेजा गया, और email में लिखा था कि एक और account deletion email पाने के लिए 24 घंटे इंतजार करें। 24 घंटे बाद account delete कर सकने वाला email मिला।
उस account में क्या था, पता नहीं। login use case के हिसाब से sensitive हो सकता है, लेकिन अगर वह इतना sensitive और important है तो सबसे destructive account deletion क्यों संभव है? सिर्फ email से delete तो हो जाता है, लेकिन auth code लेना क्यों नहीं?
MS Remote Desktop तक paste allow नहीं करता।
आखिर password managers किसलिए बनाए गए हैं?
Mac पर Hammerspoon इस्तेमाल करता हूँ, और Cmd+Shift+V shortcut को paste के बजाय actual characters type करने के लिए set किया है। जब भी कोई ऐसा करता है, यह हमेशा काम करता है।
hs.hotkey.bind({"cmd", "shift"}, "V", function() hs.eventtap.keyStrokes(hs.pasteboard.getContents()) end)Keyboard Maestro भी ऐसे काम के लिए बेहतरीन ऐप है, और अजीब व्यवहार रोकने के लिए key inputs के बीच उचित delay भी जोड़ देता है। लगभग 0.05 सेकंड के आसपास
Windows पर AHK से यही काम करता हूं, और shortcut भी वही रखता हूं। बस हर key input के बीच करीब 10–50ms का छोटा delay डालता हूं। वरना input कभी-कभी बिगड़ सकता है
मैंने भी जोड़ा है, लेकिन Cmd+Shift+V याददाश्त के हिसाब से “बिना formatting के paste” है, इसलिए shift की जगह option इस्तेमाल करता हूं
-- https://news.ycombinator.com/item?id=39640745hs.hotkey.bind({"cmd", "alt"}, "V", function()hs.eventtap.keyStrokes(hs.pasteboard.getContents())end)यह तरीका Google Sheets की जरूरत से ज्यादा input interception की समस्या भी हल कर देता है
ऐसे कामों के लिए add-on पर भरोसा करने की जरूरत नहीं होनी चाहिए, और इसे browser में configure किया जा सकना चाहिए
Firefox में
dom.event.clipboardevents.enabledको toggle किया जा सकता हैअच्छा होगा अगर सिर्फ “paste” event को चुनकर बंद किया जा सके। work tools में “click करके इस value को copy करें” जैसे button बहुत उपयोगी होते हैं, लेकिन malicious sites से बचने के लिए clipboard events बंद करते ही वह feature इस्तेमाल न कर पाना अफसोसजनक है
अनुभव के हिसाब से यह setting कुछ web apps में paste functionality तोड़ देती है। जैसे कुछ terminal emulators या text editors
right-click करते समय Shift दबाए रखें तो menu को force-open भी किया जा सकता है
पहले यह setting Google Docs में copy/paste तोड़ देती थी। काफी समय से आजमाया नहीं, इसलिए अब शायद ठीक हो चुका हो
मुझे भी sites द्वारा paste रोकना पसंद नहीं, इसलिए यह extension अच्छी लगी। खासकर account number·routing number या email address confirm करने जैसी जगहों पर, और यह password managers को भी खराब कर देता है। कमजोर passwords रोकने के नाम पर जटिल password rules लागू किए, लेकिन paste रोकना जाहिर तौर पर परेशान करने वाला है
फिर भी, मैंने ऐसे security measures सीधे web application में implement भी किए हैं। requirements मिले तो implement किया, और customer से पूछा कि “हर कोई” जानता है कि यह user experience के लिए खराब है और security के लिए भी काफी उल्टा असर डालता है, फिर इसे क्यों करना है
जवाब था compliance। क्योंकि security audit पास करना था, और बड़े customers या insurers को साबित करना था कि उनके पास industry-standard security measures हैं
अफसोस, bank password manager इस्तेमाल करने वाले 2% लोगों की परवाह नहीं करता। बाकी लोग अब भी passwords याद रखते हैं, भूल जाते हैं, और 2003 की तरह उसी पर मजाक करते हैं
“compliance की वजह से करना पड़ता है” कहा जाता है, लेकिन क्या सच में ऐसा है?
मैंने कोई ऐसा compliance requirement नहीं देखा जिसका तर्कसंगत तरीके से खंडन न किया जा सके। यह बस जरूरत से ज्यादा उत्साही compliance consultant और users की ज्यादा परवाह न करने वाली team के मिलने का नतीजा है। लोग ठीक से कोई सवाल नहीं पूछते
हमारे PCI compliance audit ने point किया कि login form fields में autocomplete disable नहीं किया गया था। यह paste disable करने जैसा तो नहीं है, लेकिन उसी दिशा में जा रहा है
निजी तौर पर, जो site password manager (Bitwarden) इस्तेमाल नहीं करने देती, उसे मैं बस छोड़ देता हूं
अगर paste-blocking workarounds बहुत ज्यादा फैल गए, तो वही sites आखिरकार virtual keyboard implement करेंगी
अगर touchscreen users के लिए वह बहुत आसान हुआ, तो अगला कदम शायद virtual keyboard पर click करने वाला virtual mouse होगा। इंसान और computer में फर्क बताने के नाम पर mouse acceleration भी random बदला जा सकता है
पहले यहां आया हुआ एक वैकल्पिक bookmarklet है
[1]: https://bookmarkl.ink/ashtonmeuser/6e3869d8e468e016f22a4b4de...
जब paste नहीं होता, तो आम तौर पर right-click → inspect element के बाद console में
$0.value="value from clipboard"लिखता हूं। लगभग हर जगह काम करता हैpaste से छेड़छाड़ करना autofill बंद करने जैसा है, और HTML5 standard काफी साफ कहता है कि इसे कब ही बंद करना चाहिए: “खास तौर पर sensitive value (जैसे nuclear weapon activation code) हो, या ऐसा value जो कभी reuse नहीं होगा (जैसे bank login के लिए one-time key)”
मेरे दिमाग में सिर्फ वह case आता है जहां malware clipboard value बदलकर user को गलत value paste करने के लिए धोखा देता है। लेकिन अगर वह scenario खोलें, तो malware के पास manual input field से छेड़छाड़ करने के भी तमाम तरीके हैं
Ctrl-F interception भी उसी स्तर की चीज है
browser में जिस shortcut का एक मतलब होता है, दूसरे applications में उसका बिल्कुल अलग मतलब होना आम बात है। जैसे-जैसे ऐसे applications web apps बनते जा रहे हैं, shortcut conflicts हो सकते हैं
Google Docs को उदाहरण लें: document या spreadsheet में Ctrl-F दबाने पर आप browser find चाहते हैं, या app का अपना find? ज्यादातर users app का find चाहेंगे। news site पढ़ते समय ज्यादातर लोग browser search की उम्मीद करेंगे
मतलब, सख्त नियमों में हमेशा exceptions होते हैं। हालांकि मूल लेख की copy/paste समस्या में कोई exception नहीं है। marketing·tracking वाली बकवास के लिए मेरे clipboard से छेड़छाड़ न करें
कुछ आधे-अधूरे वैध cases भी हैं जिन्हें justify किया जा सकता है। उदाहरण के लिए Notion database देखते समय standard Ctrl-F लगभग बेकार है, और document search को Notion API के जरिए results लाने चाहिए, कभी-कभी screen पर दिख रहे items से जुड़े results भी खोजने चाहिए
“आधा” इसलिए कहा क्योंकि असल में बेहतर होता कि इसे किसी दूसरे shortcut पर map किया जाता। फिर भी समझ आता है कि user remapping चाह सकता है
अंततः यह शुरुआत में ही ऐसे document-processing तरीके को चुनने के फैसले से निकला है। online applications और webpages की सीमा पर यह जटिल बहस बन जाती है
हाल ही में पता चला कि interception के बाद Ctrl-F एक बार और दबाने पर browser search box खुल जाता है
कौन सी site थी याद नहीं, लेकिन intercepted search box में इस बात की tooltip थी। सोचा Redocly search में भी होगा या नहीं, तो आजमाया; tooltip नहीं थी, लेकिन काम किया
पक्का नहीं कि यह universally काम करता है, या Redocly interface का undocumented feature है और जहां developer ने खास ध्यान नहीं दिया वहां काम नहीं करेगा
environment Chrome + OSX या Windows था
समझ नहीं आता कि browsers websites को अपने shortcuts override करने की अनुमति क्यों देते हैं। इसे ठीक से काम कराने के लिए शायद उल्टा अतिरिक्त code चाहिए होता
उदाहरण के लिए Linear Cmd+F को intercept करता है, और browser के built-in search के बजाय, जो हर जगह एक जैसा काम करता है, कोई घटिया-सी चीज़ देता है। यह वही Linear है जिसे लगता है कि आप WYSIWYG Markdown editing नहीं चाह सकते
यकीन नहीं होता कि 2024 में भी docs को बस grep नहीं किया जा सकता
क्या और लोगों ने भी नोटिस किया कि original poster ने original repository की तुलना में कोई meaningful improvement न रखने वाला fork share किया और उसे 399 upvotes मिल गए?
original repository के author ने Firefox support PR reject कर दिया था, इसलिए fork owner ने manifest की 6 lines जोड़ने के लिए fork किया था
https://github.com/jswanner/DontF-WithPaste/pull/29
हालांकि मानता हूँ कि unrelated
.gitignorechange को original PR में होने की ज़रूरत नहीं थीयह Firefox के लिए है और दूसरा Chrome के लिए है, तो शायद यह काफी meaningful upgrade हो सकता है
upvotes शायद “useful tool के लिए thanks” से ज़्यादा “हाँ, मुझे भी ऐसी चीज़ें नापसंद हैं” वाली वजह से मिले लगते हैं
fork Firefox support के लिए है, और जो व्यक्ति शुरुआत से Chrome इस्तेमाल नहीं करता, उसके लिए यह meaningful upgrade है। original repository आसानी से दिख जाती है, लेकिन GitHub पर कोई specific fork ढूँढना कहीं ज़्यादा झंझट वाला है
अगर यह इतना बुरा लगता है, तो अगली बार मैं इसे अपने तक ही रखूँगा। HN पर दूसरे लोगों को कोई interesting चीज़ बताने की वजह नहीं होगी
सही। parent repository की तुलना में बदली हुई files 3 हैं, और changes बस
.gitignoreऔर fork repository के लिए updated URL ही हैं