PERES, Paulo Júnior de Jesus [1]
PINTO, Aurílio Guimarães [2]
FREITAS, Caio Guimarães [3]
LEITE, Francisco Canindé da Silva [4]
SILVA, Francisco Eronildo da [5]
OLIVEIRA, Geveson de Souza [6]
RIBEIRO, Dallas dos Santos [7]
ALMEIDA, Cristiany Caliri de [8]
MORAIS, Gilvanete Melo de [9]
PERES, Paulo Júnior de Jesus; et.al. Creazione di applicazioni di Web protetto. Rivista scientifica multidisciplinare di nucleo di conoscenza. 07 edizione. anno 02, vol. 03. PP 44-51, ottobre 2017. ISSN: 0959-2448
Riepilogo
Con la crescita di Internet e l'utilizzo sempre più come un mezzo per fornire servizi e comunicazioni, è necessario che gli sviluppatori di sistemi web hanno tanta attenzione come le pratiche di sicurezza nello sviluppo di sistemi. È un dato di fatto che costruire un'applicazione Web sicura è un compito molto difficile al giorno d'oggi, perché affinché un sistema possa essere considerata sicura dipende esclusivamente il codice sviluppato dal programmatore, ma anche i server di applicazioni, server di database, la rete di comunicazione e molte altre cose che sono fuori della portata dello sviluppatore del sistema. In questa luce, l'obiettivo di questo articolo è quello di essere un riferimento per quanto riguarda i livelli principali di attacchi utilizzati da hacker di vulnerabilità del codice dei sistemi web e i modi possibili di prevenzione. I concetti utilizzati in questo articolo possono essere utilizzati in qualsiasi linguaggio di programmazione, perché le teorie sono universali, tuttavia allo scopo di illustrare i codici sono scritti nel linguaggio di programmazione, come è attualmente uno dei linguaggi di programmazione più PHP diffuso tra le comunità. In questo senso, questo articolo viene fornito a contribuire con la Comunità, essendo una base veloce della ricerca sulla prevenzione degli attacchi sui sistemi.
1. Introduzione
Nel contesto attuale, è comune per aziende, enti pubblici e istituzioni look per agilità nella distribuzione di informazioni a clienti e dipendenti agilizing il processo decisionale in questo mezzo. Tuttavia, affinché questa strategia di lavoro, è imperativo che non c'è sicurezza nella gestione e la visualizzazione di informazioni relative all'attività della società.
In questo senso, Internet si presenta come il mezzo per facilitare e fornire tale distribuzione di dati e informazioni sulle attività. Questa opportunità, e-commerce o commercio virtuale. Secondo Teixeira:
In Brasile, attualmente, 45,6% della popolazione ha accesso a internet (circa 90 milioni di persone). Se facciamo un confronto tra il 2000 e il 2012, abbiamo visto un aumento significativo, circa 1.500%, il numero di utenti internet in Brasile (TEIXEIRA, 2015, pag. 19).
Commercio elettronico o e-commerce, secondo Salvador (2013) può essere definita come operazioni commerciali effettuate nell'ambiente virtuale, con l'ausilio di strumenti elettronici, cioè, è in grado di acquistare un elemento particolare a chilometri di distanza, senza uscire di casa o in ufficio, utilizzando smartphone, computer o altro dispositivo. Dove la convenienza, facilità di accesso e, principalmente, dai consumatori prezzi sono attratti all'e-commerce.
Tuttavia, è necessario che gli sviluppatori di prestare attenzione alla sicurezza delle informazioni quando si sviluppano applicazioni per Internet, perché le informazioni sono disponibili a tutti i tipi di utenti. Secondo Aguilar, segue il concetto della sicurezza delle informazioni:
Sicurezza delle informazioni si riferisce alla protezione esistente delle informazioni di una particolare azienda o persona, cioè, si applicano le informazioni aziendale su persone. Informazioni significa ogni e qualsiasi contenuto o dati con valore a qualsiasi organizzazione o persona. Può essere immagazzinato per uso limitato o esposti al pubblico per consultazione o acquisizione. (AHMAD, 2008).
Secondo Ferreira (2017), in questo universo di opportunità che internet è diventato, utenti malintenzionati hanno l'opportunità di rubare informazioni sensibili come le password Bank:, informazioni riservate, tra le altre possibilità.
Lo scopo di questo articolo sono illustrate alcune tecniche utilizzati per impedirsi di furto di informazioni o invasione dei sistemi e misure per garantire che gli sviluppatori di sistemi che operano tramite internet (WEB DEVELOPEMENT) sviluppano sistemi sicuri, ridurre la vulnerabilità a attacchi di vari livelli.
2. XSS (CROSS SITE SCRIPTING)
Secondo cambiamento continuo (2017), XSS si verifica quando un Web applicazione prendere dati dannosi inviati dall'utente. In generale l'intruso si avvarrà della mancanza di malizia della persona che ha sviluppato l'applicazione Web per iniettare codice dannoso che si ingannare l'applicazione o per raccogliere informazioni riservate sistema.
Un esempio di questa vulnerabilità è nel metodo di trasmissione a variabili di tipo Get (variabili passate nell'URL del sito) come: http://www.igreja.com.br/mostar.php?site=sexo.php.
Questo può generare un vero e proprio fastidio al sito perché l'utente malintenzionato potrebbe passare qualsiasi indirizzo del sito Web sopra, cosa si potrebbe fare ad esempio, che la pagina avrebbe funzionato come un sito pornografico.
Secondo flusso (2017) per evitare che l'applicazione vulnerabile a questo tipo di attacco, si possono adottare misure come:
- Utilizzo di variabili di tipo per i dati sensibili è controindicata, perché compromette la sicurezza del sistema;
- Utilizzare i filtri nell'acquisizione dei dati dell'utente per quel blocco qualsiasi tipo di codice dannoso o URL viene iniettato da utenti esterni. Questi filtri possono essere implementati dal programmatore o dalla capacità del server applicazioni.
3. SQL INJECTION
Secondo Mueller (2013) l'attacco tramite SQL Injection è l'iniezione di codice SQL nelle variabili passate al Web Form e si propone di eseguire codice arbitrario di SQL in un'applicazione Web.
Si tratta di un attacco molto comune e pericoloso, un esempio è il seguente script chiamato "remover.php", segue la trascrizione del codice:
<? php
$sql = "Elimina da dove codice cliente =". $ GET[‘codigo’];
mysql_query ($sql) o die (mysql_error ());
?>
Analizzando lo script qui sopra, il seguente è un esempio di come l'utente malintenzionato può eseguire un attacco SQL INJECTION tramite URL: http://seusite.com.br/remover.php?codigo=666+OR+1. In questo modo, tramite questa istruzione, il risultato sarebbe eliminare tutti i record da parte dei clienti entità.
Secondo il manuale online di PHP, il modo più sicuro è controllando il tipo di variabili che vengono ricevuti dai campi del form, quindi, come una forma di prevenzione, di seguito è un esempio di codice:
<? php
SetType ($offset, 'integer');
$query = "SELECT id, nome da prodotti ORDER BY nome limite 20 OFFSET $offset;";
Si prega di notare il %d nella stringa di formato, utilizzando %s sarebbe inutile
$query = sprintf ("SELECT id, nome da prodotti ORDER BY nome OFFSET limite 20% d."
$offset);
?>
Nel codice precedente, la funzione "settype" ha la funzione per verificare se la variabile ha ricevuta sia effettivamente di tipo integer, prevenire codice dannoso frammenti sono incorporati nella variabile.
4. Regular Expression Denial of Service (segreti avrebbero reso noti)
L'autore Focke (2017) descrive le espressioni regolari (REGEX) come tecnica per usare le funzioni del linguaggio di programmazione in uso per il trattamento di informazioni da parte dell'utente. Queste funzioni tenta di codificare il valore delle variabili in modo che non possano danneggiare o aggirare il sistema.
Segue nell'esempio nel linguaggio di programmazione di ASP:
<%
Dim variabile
Variabile = Sever. htmlEncoder (richiesta ("var"))
%>
Segue un altro esempio usando il linguaggio di programmazione PHP:
<? php
Se (! ereg ("^ ([0-9,a-z,A-Z]+) [.,_,-]([0-9,a-z,A-Z](+)) [@]* [0-9,a-z,A-Z](+)[.,_,-] ([0-9,a-z,A-Z](+))[.] *[a-z,A-Z] () {2,3[0-9,a-z,A-Z]} ()? $", $ _ POS ("variabile")) {
echo "caratteri non validi nel campo email!";
}
?>
Secondo Mattos (2013), per evitare questo tipo di attacco, è necessario per gli sviluppatori creare filtri di acquisizione per correggere gli errori degli algoritmi di esecuzione standard di REGEX codice di linguaggio di programmazione utilizzato.
5. APPLICAZIONI CGI
In secondo luogo Foster (2017) Common Gateway Interface (CGI), è un tipo di matalinguagem o indipendente dalla piattaforma middleware forniti dai server Web che consentono di eseguire programmi/script da un URL. Questi script sono solitamente scritti in Perl, Shell, Tcl, Java, Python o C (più scritti in linguaggi interpretati) e si trova in un directory/cgi-bin.
Applicazioni CGI scritte senza cura possono causare gravi problemi per le vulnerabilità dei server Web. Secondo Foster:
Programmazione CGI differisce dalla programmazione tradizionale, in sostanza, a causa dell'ambiente e la funzione di gateway tra il client e il server, che finisce per influenzare molto in aspetto di sicurezza (va ricordato che queste applicazioni operano in un ambiente non protetto e che, In teoria, può essere eseguito da chiunque). (Foster, 2017)
Uno script CGI in esecuzione sotto lo stesso Web server UID non è necessariamente un vestito male, ma se qualsiasi applicazione CGI ha un buco di sicurezza che consente a un utente malintenzionato di eseguire programmi con UID del server Web, può causare un serio problema nel tuo sito. (Foster, 2017).
Seconda persona (2017), un modo per aggirare questo problema è via "Wrapper", ovvero programmi che coinvolgono altri programmi correlati a cambiare il loro modo di che operare. Così, in ambienti dove gli utenti scrivere applicazioni CGI indipendenti, è una buona strategia per isolarli da altra, vale a dire, meccanismi di attuazione nel vostro server in modo che l'accesso un di utente script volontà non interferiscono con dati di altri utenti. suexec (http://www2.idiscover.co.uk/apache/docs/suexec.html) risolve questo problema (ci sono altri strumenti che anche trattano questo problema) che le applicazioni eseguire applicazioni CGI sotto l'UID dell'utente stesso, vale a dire, il proprietario dell'applicazione CGI.
6. TIPO DI DATI
Secondo il manuale online di PHP, che sempre è necessario prestare attenzione è che alcuni linguaggi di programmazione utilizzano delle variabili globali che soddisfano qualsiasi tipo di dati. Utilizzo non corretto, infatti, provoca una considerevole livello vulnerabilità nel sistema.
Persona (2017) vengono descritti alcuni esempi di attraversare le variabili nel linguaggio di programmazione PHP:
<? php
$cod = $ Get[‘cod’] / tipo Get
$cod = $ _ POST[‘cod’] / / tipo post
$cod = $ _ SESSION [‘cod’]/ / tipo sessione
$cod = $ _ COOKIE [‘cod’]/ / tipo biscotto
?>
7. SCRIVERE FILE TRAMITE UPLOAD
Ogni volta che si scrive in un file tramite UPLOAD lo sviluppatore deve essere sicuro del tipo di file in fase di registrazione sul disco. Ad esempio, un file di immagine possa essere trattato semplicemente con una convalida di tipi di file. Ecco perché gli utenti malintenzionati possono inviare file che influiscono in qualche modo il server o l'applicazione (persona, 2017).
Secondo il manuale online di PHP, segue un esempio di convalida utilizzando il linguaggio di programmazione PHP:
<? php
Function type_up)
{
controlli per vedere se il tipo mime del file immagine
Se (! eregi ("^ immagine / (pjpeg | jpeg png gif bmp | | |) $", $this-> fil[“type”]e)) {
return 0;
} else {
return 1;
}
}
?>
8. FORME DI ASSICURAZIONE CON SYNCHONIZER TOKEN
Secondo Bragil (2017), spina di sincronizadora è una tecnica che utilizza una variabile creata all'inizio della sessione, con un valore iniziale impostato dallo sviluppatore al fine di garantire che il modulo è stato effettivamente creato dall'applicazione server.
Secondo Brasile (2017), a un sito con l'autenticazione, è possibile avviare il valore dei gettoni al momento del LOGIN, quindi assicurarsi che l'utente sia valido:
Esempio in PHP:
<??>
session_start ();
…
Inizializza la spina di sincronizadora con un valore casuale
$ Session[“synctoken”] = uniqid (time ());
….
?>
Ora la spina sincronizadora registrata nella sessione, possiamo illustrare come creare un modulo protetto da lei:
<form name="frmteste" method="post" action="cadastro.php"></form>
…
<!– coloca todos os campos do formulário –>
<!– a nossa ficha fica como um campo hidden –>
<input type="hidden" name="token" value="<?=$_SESSION[“synctoken”]?>">
…
<div class="nicdark_archive1 nicdark_padding010" style="box-sizing:border-box;"><!–link pagination–></div>
Visualizzazione del codice sorgente, si noti che l'attributo di valore del TOKEN ha un casuale campo valore, digitare "45jfg58955699j96uy8gtj85". La sincronizzazione avviene durante l'elaborazione del modulo. Nel nostro esempio, l'azione della maschera è il file "cadastro.php" che quando si ricevano i dati del modulo, sarà verificare se il valore del campo TOKEN del modulo è lo stesso come la sessione di variabile $ Sessio[“synctoken”]n. Se non, è un segno che qualcuno sta cercando di fare quello che non dovrebbe, in altre parole, è probabilmente qualcuno che ha salvato la pagina con il modulo il tuo micro e sta cercando di fare qualche "arte". In questo caso, si possono prendere alcuni passaggi, come raccogliere il cittadino, visualizzare una frase intimidatorio, tra gli altri. Se il valore è uguale, luce verde, è possibile continuare con l'elaborazione (Bragil, 2017).
I vantaggi sono numerosi, come questo è un modo semplice ed efficace per aumentare la sicurezza di un sistema Web.
Conclusione
Il Web è stato progettato senza molta preoccupazione, o quasi nessuno, in modo sicuro. L'obiettivo principale era di fornire un'informazione più amichevole risorse disponibili al momento. Con la rapida crescita del Web e la diversificazione del suo uso, sicurezza è diventato un punto di importanza cruciale, soprattutto per il Web come principale attrattiva commerciale. In questo caso lo sviluppo senza sicurezza perché un impatto cruciale sui profitti e sul lavoro dell'azienda.
Potremmo citare altri casi di invasione o di insicurezza nel processo di sviluppo di sistemi, tuttavia trattiamo solo i punti essenziali di uno sviluppo sicuro.
Infine, questo lavoro è completamente estesa, e altri autori possono utilizzare questo articolo come un riferimento per espandere la quantità di attacchi e difese per essere utilizzato da team di sviluppo software.
Riferimenti
Ahmad, Hong Keow. Sicurezza dell'informazione (esso). Disponibile a:< http://www.administradores.com.br/informe-se/artigos/seguranca-da-informacao-ti/23933/=""> </> acceduto a sopra 25 ottobre 2017.
Bragil, Roger. Forme più sicure con token di synchonizer. Disponibile a: < http://phpbrasil.com/artigo/z61mreuozqth/formularios-mais-seguros-com-synchonizer-token-ficha-sincronizadora=""> acceduto a sopra: 25 ottobre 2017.
Ferreira, Rodrigo. "Protezione delle applicazioni web". 1a Ed. São Paulo: Casa del codice. 2017. 156 p.
Flusso, Peter. XSS. < http://phpbrasil.com/articles/article.php/id/506="">Acceduto a: 20 ott. di 17.
Focke, Erica. "UTILIZZANDO REGEX DI CONTROLLO PER I CAMPI MODULO". < http://phpbrasil.com/articles/article.php/id/520="">Acceduto a: 20 ott. di 17.
Foster, Anthony. "Sicurezza negli script CGI". < https://memoria.rnp.br/newsgen/9803/scripts.html="">. Acceduto a sopra: 25 ottobre 2017.
Mueller, Giovanni Paolo II. "Sicurezza per gli sviluppatori web". 1a Ed. São Paulo: Nuove tec. 2013. 416 p.
Salvador, Mauricio. "E-commerce Manager. 1° Ed. São Paulo. Editore: Scuola di e-commerce, 2013.
Teixeira, Tarcisio. Commercio elettronico: come regolamento di Internet e civile di punto di riferimento dell'e-commerce in Brasile. São Paulo: Saraiva, 2015.
Persona, Márcio. "Sicurezza in PHP". 1 Ed. São Paulo: Nuovo Tec 2007. 152p.
"Cross-SITE Scripting (XSS)". Disponibile a: <http: br.ccm.net/contents/19-cross-site-scripting-xss="">letta: 20 ott</http:> di 17
"Il manuale PHP Online". Disponibile a: <https: secure.php.net/manual/pt_br/security.database.sql-injection.php="">letta: 20 ott</https:> di 17.
[1] Laureato in informatica, si comporta come un server pubblico su SUFRAMA, come analista amministrativo-si. Esperto di database per ULBRA.
[2] Laureato in informatica, si comporta come un server pubblico su SUFRAMA, come analista amministrativo-si.
[3] Laureato in informatica, si comporta come un server pubblico su SUFRAMA, come analista amministrativo-si.
[4] Laureato in informatica, si comporta come un server pubblico su SUFRAMA, come analista amministrativo-si.
[5] Laureato in informatica, si comporta come un server pubblico su SUFRAMA, come analista amministrativo-si.
[6] Laureato in informatica, atti come server SUFRAMA, come analista amministrativo-si.
[7] Laureato in informatica, atti come server SUFRAMA, come analista amministrativo-si.
[8] Laureato in economia aziendale, atti come dipendente pubblico il SUFRAMA, come amministratore.
[9] Si è laureato in economia e commercio, atti come dipendente pubblico il SUFRAMA, come economista.