Witam.
W jaki sposób bezpiecznie jest przechowywać hasła do bazy na stronie? Kodowanie jakoś? Ale haker jak się dostanie na serwer będzie znać skrypt i tak odkoduje. Jak to się robi?? :)]
//pozdrawiam pinokio999
Witam.
W jaki sposób bezpiecznie jest przechowywać hasła do bazy na stronie? Kodowanie jakoś? Ale haker jak się dostanie na serwer będzie znać skrypt i tak odkoduje. Jak to się robi?? :)]
//pozdrawiam pinokio999
To znam. Ale samo hasło do połączenia z bazą.
nie trzyma sie hasel do bazy w html'u.
Nie ma dobrzego sposobu, żeby się przed tym zabezpieczyć na 100%. Możesz jednak skorzystać z mechanizmy uprawnień - stworzyć użytkownika 'aplikacja', który będzie miał uprawnienia na odczyt tylko tych tabel, które potrzebuje; nie będzie miał uprawnień na DROP, ani show tables.
Tak naprawdę jednak sprowadza się to do ograniczania zniszczeń w przypadku włamu.
W przypadku wyjątkowo wrażliwych danych jak na przykład dane kart kredytowych zdarzyło się nam zastosować szyfrowanie kluczem publicznym, a admin przy próbie wywietlenia wgrywał kucz prywatny, który był używany przy rozkodowywaniu (nie był nigdzie zapisywany). Oznaczało to oczywiście pewną niewygodę w użytkowania...
Jeśli jesteś z kolei pewien co do bezpieczeństwa samej bazy danych można też przerzucić większość mechanizmów autoryzacji właśnie tam.
Tzn:
create table AppUsers(userID serial, passwd binary(20))type InnoDB;
create table Comments(userID bigint unsigned references AppUsers(userID),timeSt timestamp default current_timestamp,body text not null, primary key(userID,timeSt))type InnoDB;
create procedure AddComent(pUserID bigint unsigned, pPasswd binary(20), pBody text)modifies sql data
begin
insert into Comments(userID,body)values(pUserID,pBody)where exists(select*from AppUsers where(userID=pUserID)&&(passwd=pPasswd));
end;
create user appUser identified by 'noPassword';
grant select on Comments for appUser;
grant execute on AddComent for appUser;