Perché i terminali GUI consentono l'incollaggio dei caratteri di controllo?

6

Dato che i caratteri di controllo non sono di solito resi, ma hanno un significato particolare nella maggior parte dei terminali, quali sono le ragioni per cui le app di terminale continuano a supportare il copia-incolla dei caratteri di controllo?

Si può mascherare un codice dannoso come descritto qui ad esempio, in modo che causi problemi quando viene incollato in un terminale.

Il problema che causa questo è duplice:

  • Chrome non rende il carattere ^ H, facendo in modo che il testo copiato sia diverso.
  • gnome-terminal (o xterm) lo accetta doverosamente dall'utente come se fosse un input diretto da tastiera, eseguendo i caratteri di controllo

Perché il terminale fa questo? Ci sono casi d'uso per poter incollare caratteri di controllo (diversi da \ t, \ r, \ n) in un terminale?

    
posta Manishearth 07.02.2014 - 09:50
fonte

4 risposte

4

Terminali precedenti la copia e incolla. Pertanto, all'interno del protocollo del terminale, non vi è alcuna distinzione tra incollatura e digitazione. L'idea di incollare il contenuto in una finestra di emulazione terminale è stata aggiunta al sistema simulando la digitazione rapida dei caratteri quando il terminale quando è attivata la funzione "incolla". Questo semplicemente scarica il contenuto esattamente come appare negli appunti.

Per quanto riguarda i caratteri di controllo degli incollaggi: la risposta del programmatore dell'emulatore terminale sarebbe qualcosa del tipo: "Perché dovresti fare quello?" Fai un argomento convincente che questa potrebbe essere in realtà una vulnerabilità di iniezione nel programma terminale stesso.

Come tale, non è fuori questione suggerire che programmi come PuTTY e GNOME Terminal debbano avere un'impostazione da qualche parte che ti permetta di specificare se incollare o meno dei caratteri di controllo è qualcosa che vuoi em> per abilitare. Forse disabilitato di default.

    
risposta data 07.02.2014 - 19:29
fonte
3

Credo che questa sia una buona domanda, visto che ha un sacco di sistemi coinvolti. In quale tribunale è la palla? E 'veramente un problema? Non ci avevo mai pensato, ma lasciami sputare qualche pensiero.

  1. Credo che copy & paste sia uno strumento e poiché è uno strumento credo che possa essere utile copiare e caricare i caratteri di controllo da un luogo a un altro. Forse, ad esempio, vuoi copiare una ricetta script di shell e incollarla nel tuo terminale o nella tua "applicazione per le note".

  2. Informazioni sulle implicazioni di sicurezza. Certo che ci sono, potresti copiare qualcosa che non sai se sta danneggiando e in effetti è nascosto in modo che possa ingannare gli utenti avanzati quindi, è così semplice come aggiungere un avvertimento quando copia / incolla i caratteri di controllo? Dovrebbe essere dipinta una stringa speciale ogni volta che trova un carattere di controllo? Bene, immagino dipenderà dall'applicazione che consideriamo.

Spero che questa risposta ispiri qualcun altro a esprimere pensieri interiori, aggiornerò questa risposta se riterrò di aggiungere alcuni pensieri più preziosi.

    
risposta data 07.02.2014 - 11:28
fonte
3

I terminali consentono input arbitrari perché sono esattamente questo: terminali . Emulano vecchi dispositivi fisici che funzionano su una linea seriale. Copia-incolla è stata forzatamente inserita in quel modello, senza un reale problema di sicurezza.

In effetti, nel modello Unix + X11 dei vecchi tempi, la sicurezza era garantita impedendo agli estranei di inviare eventi sintetici. Che l'utente stesso stia copiando copia di frammenti di dati maligni non è stato considerato come una minaccia.

I terminal inizieranno a occuparsi di eventuali attacchi effettivi, costringendo gli sviluppatori a prendere provvedimenti per evitare il totale ridicolo.

    
risposta data 07.02.2014 - 18:05
fonte
0

Per quanto riguarda:

Are there any use cases for being able to paste control characters (other than \t,\r,\n) into a terminal?

La tua interazione con TUI è tramite questi caratteri di controllo. Essere in grado di incollarli significa che puoi utilizzare questa funzione per automatizzare parzialmente l'interazione con i programmi TUI.

Qualche tempo fa, ho salvato al mio dipartimento molte ore di lavoro affrettato per inserire manualmente centinaia di record di più campi nei moduli TUI, prendendo i dati necessari per entrare da un CSV, interpolando i caratteri di controllo necessari per navigare nel TUI (tramite sed penso), convalidando il risultato e incollandolo nel terminale. Tutti richiedono alcuni minuti.

Mostrandoli è come aggiungere una funzione di importazione a ogni forma del programma TUI. Hanno trovato che fosse una tecnica molto utile, un vero risparmio di tempo.

A seconda dei casi, tuttavia, potrebbe essere pericoloso. Se un valore di input non è valido o se una sequenza di controllo è errata e il programma TUI risponde in modo imprevisto, la pasta non si chiuderà; andrà avanti e farà chissà cosa con il programma TUI.

Nel nostro caso, è stato semplice assicurarsi che gli input fossero validi, testare un ciclo (abbastanza del paste per inserire il record 1 e ritornare alla posizione iniziale) era sufficiente per garantire che i caratteri di controllo fossero ok, e noi ci è voluto un momento per considerare il peggio che potrebbe accadere se in qualsiasi momento questa particolare pasta potesse essere interpretata fuori dal contesto.

Questa è stata una soluzione ad-hoc rapida e sporca a un problema piuttosto raro. Dato più tempo, potrebbe essere stato meglio imparare come scrivere gli script expect prima di uscire almeno dal prima ha rilevato un errore e ha segnalato dove si è bloccato. Tuttavia, eravamo abbastanza frettolosi, quindi non abbiamo potuto prendere in considerazione qualcosa su cui avremmo dovuto investire prima di tutto il tempo, specialmente quando avevamo già accettato quanto tempo ci sarebbe voluto per farlo manualmente. La semplicità e la facilità di incollare la nostra interazione con una TUI in pochi minuti è ciò che ha fornito valore rispetto all'uso di uno script expect .

    
risposta data 01.05.2017 - 23:07
fonte

Leggi altre domande sui tag