Portál AbcLinuxu, 4. května 2025 12:39
Kopírování příkazů z webových stránek může být hodně nebezpečné. Příkaz na webové stránce vypadá v pořádku, proč jej tedy přepisovat? Označím jej a zkopíruji do okna terminálu. Právě jsem spustil několik útočníkem připravených příkazů. Zkopírovány a spuštěny byly příkazy, které nejsou na stránce vůbec vidět.
Tiskni
Sdílej:
shs
".
lidi to odklikávají jak blbí…Hele zrovna nedávno jsem si takhle omylem spustil (naštěstí neškodný) pythoní skript - byl v Zipu, což se mi otevřelo ve Squeeze (GTK archive manager), a já se chtěl podívat na obsah. Tak jsem na něj poklepal a čekal jsem, že ta věc spustí textový editor. No, prdlajs, spustilo to python.
abcd<span style="display:none;">efghijklmnopqrstuv</span>wxyz
velmi seriózněvs
ozdobné nadpisy
Jo, chápu.
Možná si říkáte, k čemu je dobré dávat do stránky prvky, které se nezobrazí. Je to dobré na práci s javascriptem a v hektické praxi také na skrývání věcí, které prostě ještě nejsou hotové. Další uplatnění se najde při tisku, kdy se prostě některé věci na obrazovce viditelné na tisk nepošlou.Zrovna za ten tisk bych vyloženě vraždil.
Zrovna za ten tisk bych vyloženě vraždil.No to já také. Smutná pravda je ta, že takových 99 % stránek nemá tisk ošetřený buď vůbec, nebo špatně. A při názoru, který jsi citoval, se tomu přestávám divit…
display: none
/ visibility: hidden
. Ostatních věcí si většinou všimneš, protože při vyselektování jsou vidět.
Mátě někdo protip na doplněk, co by to implementoval? Případně nechcete se do toho někdo pustit? :D
::selection
, kterým můžeš upravit, jak vypadají jednotlivé prvky při vybrání. A to je jen prvních pár nápadů, co jsem si právě vycucal z prstu, jsem si jist, že CSS toho skrývá ještě mnohem víc a javascript nebo flash jsme ani nenačali Ono by prostě stačilo, aby se kopírovalo pouze to, co je vidět.Vo tom to právě je: Je hodně náročný určit, co je/není vidět, jak už tu zaznělo...
Když budeš mít mezi kupou textu o normální velikosti nějaký text o výšce jeden či pár pixelů, tak jak má vědět jestli to přečteš nebo ne?K tomu by právě sloužil ten doplněk, že. Tam by byla prostě nějaká sada pravidel, která by mu to řekla.
Prohlížeč renderuje, nekontroluje co vidíš.Já bych řekl, že to spolu tak nějak souvisí a při renderování kontroluje co vidím - a to co nevidím (neviditelné/záporné divy) nevykresluje. Teď jde o to tam přidat nějaké ověřování a sadu pravidel.
.neviditelny {color: #fffffe; background-color: #ffffff; }
p.moz::-moz-selection {
background:#000000;
color:#000001;
}
Moje pointa byla, ze lze ruznym zpusobem zajistit to, aby text nebyl videt (vcetne jeho oznaceni). Obsahnout vsechny varianty "neviditelnosti" textu je programove obtizne.
Na druhou stranu pokud jedu copy paste podle navodu, tak dost pravdepodobne zkopiruju "rm -rf /", ktere neni nijak skryte.
Notifikace uzivatele dialogem co kopiruje asi dava smysl. Snaha o detekci neviditelneho textu je jenom potencionalnim zdrojem dalsich chyb.
A nebylo by tím pádem řešením zakázat označování textu (s výjimkou nějaké stlačené klávesy třeba) skrze tagy? Aby se v případě třeba
aaa<span>bb</span>ccc
při startu označování od prvního "a" označilo maximálně poslední "a", jakožto poslední non-tag plaintext znak? To samé při trojkliku.
:first-letter
, :before
nebo :after
a 2) řada webů používá pro příkazy zvýrazňování syntaxe, a tedy nějaký ty tagy tam jsou potřeba.
suhlas - podla mna sa da divat na to z viacerych uhlov. z pohladu uzivatela kopirujem to, co som oznacil (viditelny text). Viac ma nezaujima. Prezerat HTML kod by bolo cisty brainfuck pri kazdom kopirovani (vseobecne, nielen prikazov).To jo. Na druhou stranu, proč dovolí prohlížeč vykreslit span -100px nalevo a -100px nahoře nad začátkem vlastní stránky je mi docela záhadou.
To funguje, ale opravdu by měl jít neviditelnej obsah kopírovat do schránky?Já bych si spíš kladl otázku k čemu se to dá vlastně reálně využít (krom popsaného případu).
využití to určitě má.No tady jsem myslel zrovna pro účely toho kopírování (ať už je to způsob jaký chce).
Pozicování i mimo rozsah stránky se používá úplně normálně a využití to určitě má.No tady zrovna dost pochybuju. A nebo aspoň za sebe můžu říct že krom nějakých debilních jezdících nápisů v JS mě vůbec nic nenapadá. No ale i když bych to měl vzít z hlediska technické korektnosti – i když nadpis zcela zajede za viditelnou plochu, jaký smysl má ho vykreslovat/pozicovat? To by John Carmack radostí zrovna moc neskákal.
nic to nemění na tom, že pastovat dlouhé commandy do shellu je blbostA co krátké? Nebo URL ve stránce, když ji dáváš jako argument třeba tomu gitu? Děláš vždycky kolečko přes textový editor/správce schránky, abys to zbavil nebezpečných znaků? Jinak ten nápad, o kterém je zprávička, se mi moc líbí.
git clone /dev/null; clear; echo -n "Hello ";whoami|tr -d '\n';echo -e '!\nThat was a bad idea. Don'"'"'t copy code from websites you don'"'"'t trust!
Here'"'"'s the first line of your /etc/passwd: ';head -n1 /etc/passwd
git clone git://git.kernel.org/pub/scm/utils/kup/kup.git
Ze začátku to vypadalo na js-hnůj, ale zdroják odhalil tu eleganci
xcx() # X Clipboard eXecute
{
printf 'Contents of the clipboard:\n\n'
xsel -b
printf '\n\n'
read -p "Execute the code above? [y/n] " yn
case $yn in
[Yy]* ) eval "$(xsel -b)";;
* ) return 0;;
esac
}
Funguje takhle:
✔ 15:43 vojta ~ $> xcx
Contents of the clipboard:
git clone /dev/null; clear; echo -n "Hello ";whoami|tr -d '\n';echo -e '!\nThat was a bad idea. Don'"'"'t copy code from websites you don'"'"'t trust!
Here'"'"'s the first line of your /etc/passwd: ';head -n1 /etc/passwd
git clone git://git.kernel.org/pub/scm/utils/kup/kup.git
Execute the code above? [y/n] n
✔ 15:43 vojta ~ $>
✔ 15:43 vojta ~ $> echo 'echo Ahoj!' | xsel -b
✔ 15:45 vojta ~ $> xcx
Contents of the clipboard:
echo Ahoj!
Execute the code above? [y/n] y
Ahoj!
✔ 15:45 vojta ~ $>
Kdyžtak to prosím ještě někdo zkoukněte, jestli to je bezpečný...
Při X11 forwardingu by to fungovat afaik měloA to jenom když je zapnutá jeho „nebezpečná“ verze (bohužel na mnoha distribucích default). Ono není zrovna cool, když ti root na vzdáleném serveru začne dělat screenshoty a psát na klávesnici.
Jo, za to kopírování stylu bych vraždil. Nemá to žádný smysl snad krom toho, že to BFU zkurví výsledný dokument ještě daleko více, než co jsou schopni napáchat sami.
sazečského programu typu wordFACEPALM
Z konce radku mam pri kopirovani vzdycky strach, pred vlozenim do terminalu chci vzdy videt a jeste jednou zkontrolovat co se spusti.
Takze nez vlozim do terminalu, napisu si treba znak "a":
$ a
pokud je soucasti textu i konec radku, spusti se, ale obvykle skonci chybou, a tak mam sanci jeste text zkontrolovat
$ aecho "nazdar"
bohuzel to asi nebude fungovat, pokud bude napr. vic zretezenych prikazu v jedne radce, oddelenych napriklad ;
bohuzel to asi nebude fungovat, pokud bude napr. vic zretezenych prikazu v jedne radce, oddelenych napriklad ;…a nebo když je tam dokonce uprostřed newline, že. A za ní pro jistotu clear nebo posun kurzoru o řádek výš a jeho vymazání.
#
, tak proc pouzivat nejaky acko!
Jo ve výše zmíněném příkladě alespoň vidíte v terminálu, že jste vložili úplně něco jiného.Já tam teda viděl clear. Samozřejmě, na dálnopisu s tiskárnou clear nemám implementovaný, protože je to fyzicky nemožné. Ale ty elektronické terminály, to je děs. Ještě, že si pořizuju kopii spojení na děrnou pásku.
cat <<KONEC ... KONECAle kompletní řešení to není
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.