Video: Pulizia sensore pressione Punto mk2 1.2 16V 2024
La prima regola di evitare l'iniezione di codice nei programmi C ++ non è mai, mai, consentire l'input dell'utente per essere elaborato da un interprete di linguaggio generico. Un errore comune con SQL-injection è che il programma accetta l'input dell'utente come se fosse sempre accettabile e lo inserisce in una query SQL che viene quindi inviata al motore di database per l'elaborazione.
Ad esempio, un programma che richiede l'input dell'utente in una data potrebbe essere compromesso. L'approccio più sicuro e intuitivo sarebbe fornire all'utente un grafico del calendario da cui selezionare le date di inizio e di fine. Il programma creerebbe quindi una data in base a ciò che l'utente ha fatto clic.
Se ciò non è possibile, il programma dovrebbe controllare attentamente l'input per assicurarsi che l'input fosse nel formato corretto per una data, in questo caso yyyy / mm / dd < - in altre parole, quattro cifre seguite da una barra seguita da due cifre e una barra e infine altre due cifre. Nient'altro dovrebbe essere considerato input accettabile. A volte non puoi essere così specifico riguardo al formato. Se devi consentire all'utente di inserire un testo flessibile, puoi almeno evitare caratteri speciali. Ad esempio, è praticamente impossibile eseguire l'iniezione di codice SQL senza utilizzare virgolette singole o doppie.
// controlla alcune stringhe 's' per assicurarti che sia dritto ASCII size_type off = s. find_first_not_of ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890_"); if (off! = stringa:: npos) {cerr << "errorn";}
Questo codice cerca la stringa
s per un personaggio che non è uno dei caratteri dalla A alla Z, dalla a alla z, Da 0 a 9, o trattino basso. Se trova un tale carattere, il programma rifiuta l'input.