Dlatego omówimy teraz jak w szybki sposób szyfrować hasła w bazie danych bardzo popularnym algorytmem md5.
Baza danych
Baza danych jest dokładnie taka sama jak w pierwszej części artykułu, czyli:
CREATE TABLE users ( login VARCHAR(20), password VARCHAR(100) ); CREATE TABLE user_roles ( login VARCHAR(20), rolename VARCHAR(20) );
Jedyne co wymaga zmiany to zaszyfrowanie hasła. Robimy to poprzez wywołanie polecenia INSERT, z tą różnica że hasło będzie zaszyfrowane. Aby zaszyfrować hasło użyłem przykładowej strony, która wyskoczył jako jedna z pierwszych w wyszukiwarce google.com, pod hasłem: md5 generator.
Tak wiec po zaszyfrowaniu haseł admin i user uzyskujemy wyniki:
- admin = 21232f297a57a5a743894a0e4a801fc3
- user = ee11cbb19052e40b07aac0ca060c23ee
INSERT INTO users VALUES('admin','21232f297a57a5a743894a0e4a801fc3'); INSERT INTO user_roles VALUES('admin','admin'); INSERT INTO users VALUES('user1','ee11cbb19052e40b07aac0ca060c23ee'); INSERT INTO user_roles VALUES('user1','user');
Pliki konfiguracyjne
Musimy jeszcze zmienić nasz plikach konfiguracyjny WebContent/META-INF/context.xml, w którym ustawialiśmy parametry konfiguracyjne bazy danych. Do elementu <Realm> dodajemy atrybut digest="nazwa_algorytmu_szyfrującego", w naszym wypadku będzie to MD5.
Plik po modyfukacji powinien wyglądać tak:
<?xml version="1.0" encoding="ISO-8859-1"?> <Context antiResourceLocking="false" privileged="true"> <Realm className="org.apache.catalina.realm.JDBCRealm" debug="0" driverName="org.gjt.mm.mysql.Driver" connectionURL="jdbc:mysql://localhost/testdb" connectionName="root" connectionPassword="mysql" userTable="users" userNameCol="login" userCredCol="password" userRoleTable="user_roles" roleNameCol="rolename" digest="MD5"/> </Context>
Po tych zmianach wystarczy ponownie zdeployować aplikacje na serwerze. Strona działa dokładnie tak samo jak wersja bez użycia algorytmu szyfrującego md5, ale jest o wiele bardzije bezpieczna.
Brak komentarzy:
Prześlij komentarz