View Full Version : Evitare bloccaggio utenze
spillo491
11-09-2007, 10:27
Ho una web application che offre dei servizi e a cui si accede tramite login e password.
Le login sono del tipo
APIM+5 cifre , ed APIM00463
Vorrei evitare che qualcuno che non abbia di meglio da fare generi una serie di login e blocchi le utenze. Dopo 5 volte che si inserisce una password errata, infatti l'utenza viene bloccata.
Avete qualche consiglio su come realizzare questa cosa ?
usernameIsAlreadyInUse
11-09-2007, 10:44
Ma se il limite delle 5 login lo hai messo per vitare il brute force allora è corretto che sia cosi, o sbaglio. Potresti in alternativa, invece di bloccare gli account, dopo 5 tentativi falliti far inserire insieme a nome utente e password anche una stringa alfanumerica generata casualmente come fanno alcuni, tra cui gmail...
spillo491
11-09-2007, 10:56
Si è giusto che si blocchi ma se uno fa un programmino può bloccarmi 50 utenze in 1 minuto per dirti.
Dove gmail fa inserire questa stringa alfanumerica ?
Come posso implementare un sistema del genere ?
usernameIsAlreadyInUse
11-09-2007, 10:59
Dai un occhio qui http://whitehatcrew.com/captcher/
spillo491
11-09-2007, 11:16
Però è in PHP ? :muro: Io sto usando java
usernameIsAlreadyInUse
11-09-2007, 11:18
Quello era per darti l'idea, ma una ricerchina so google nn fa mai male
Tiè : http://simplecaptcha.sourceforge.net/
P.S. Si puo avere il link del sito che stai facendo?
spillo491
11-09-2007, 11:23
Grazie io avevo fatto una ricerca in google ma solo in italiano :doh:
Il sito non è ancora in linea
usernameIsAlreadyInUse
11-09-2007, 11:24
Ok, buon lavoro
spillo491
11-09-2007, 14:02
Ma manca il pacchetto com.jhlabs.image nel codice scaricato da quel sito. Dove lo posso trovare ?
usernameIsAlreadyInUse
11-09-2007, 14:13
Tiè...
spillo491
12-09-2007, 09:54
Qualcuno ha altri consigli ? :help:
spillo491
12-09-2007, 10:24
Vi sembra una buona idea inserire nella pagina di login una domanda tipo
"QUANTO FA SEI PIù DUE ?"
Puoi agire in diversi modi...il primo è inserire un captcha, come ti è stato suggerito...il secondo è bloccare anche l'indirizzo ip. Se ti arrivano più di 10 richieste da un dato indirizzo in 5 minuti allora lo banni per 24 ore....ovvero ignori le richieste che ti arrivano dallo stesso indirizzo per 24 ore dall'ultima richiesta.
Puoi anche realizzare entrambe le protezioni contemporaneamente.
Non hai ancora specificato quale linguaggio usi.
spillo491
12-09-2007, 15:13
Ciao grazie del consiglio, io sto usando java. La richiesta quanto fa due più tre non ti sembra una buona idea ? E' un controllo poco sicuro ?
Chiaramente non chiederò sempre la stessa operazione con gli stessi numeri
Ma Java cosa ? Applet, JSP, Servlet o cos'altro ?
La richiesta ha la stessa rilevanza di un captcha ;)
spillo491
13-09-2007, 11:27
Ci ho pensato e credo che i captcha siano la maniera più elegante per risolvere il mio problema. Io sto utilizzando Struts e Tomcat come web server.
Ho una pagina html di login in cui oltre a nome utente e password voglio inserire un captcha e un campo di input in cui l'utente deve riportare i caratteri che visualizza.
Nella mia pagina html di login avrò dunque
Inserisci il valore che vedi
<img src="jcaptcha">
<input type='text' name='j_captcha_response' value=''>
L'immagine jcaptcha deve essere generata dinamicamente. Ho trovato in rete una servlet che svolge questo compito
import com.octo.captcha.service.CaptchaServiceException;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
public class ImageCaptchaServlet extends HttpServlet {
public void init(ServletConfig servletConfig) throws ServletException {
super.init(servletConfig);
}
protected void doGet(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) throws ServletException, IOException {
byte[] captchaChallengeAsJpeg = null;
// L'output stream che ci serve per renderizzare l'immagine Captcha in una JPEG
// RENDERING = generazione di un'immagine a partire da una descrizione matematica
// di una scena tridimensionale
ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream();
try {
// Prendiamo l'id di sessione che utilizzeremo per generare l'immagine captcha.
// Lo stesso id sarà utilizzato per validare la risposta
String captchaId = httpServletRequest.getSession().getId();
BufferedImage challenge = CaptchaServiceSingleton.getInstance().getImageChallengeForID(captchaId,
httpServletRequest.getLocale());
// L'encoder JPEG
JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(jpegOutputStream);
jpegEncoder.encode(challenge);
}
catch (IllegalArgumentException e) {
httpServletResponse.sendError(HttpServletResponse.SC_NOT_FOUND);
return;
}
catch (CaptchaServiceException e) {
httpServletResponse.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return;
}
captchaChallengeAsJpeg = jpegOutputStream.toByteArray();
// Mettiamo il risultato nella risposta
httpServletResponse.setHeader("Cache-Control", "no-store");
httpServletResponse.setHeader("Pragma", "no-cache");
httpServletResponse.setDateHeader("Expires", 0);
httpServletResponse.setContentType("image/jpeg");
ServletOutputStream responseOutputStream = httpServletResponse.getOutputStream();
responseOutputStream.write(captchaChallengeAsJpeg);
responseOutputStream.flush();
responseOutputStream.close();
}
}
L'ho inserita nella cartella action della mia applicazione e ho inserito nel file web.xml
<servlet>
<servlet-name>jcaptcha</servlet-name>
<servlet-class>ImageCaptchaServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
.....
.....
.....
<servlet-mapping>
<servlet-name>jcaptcha</servlet-name>
<url-pattern>/jcaptcha</url-pattern>
</servlet-mapping>
Perchè non vedo l'immagine ? come devo integrare questa servlet nella mia applicazione web ?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.