Nie jest to bezpośrednia odpowiedź na temat przechowywania haseł, ale generalnie używam co najmniej dwóch połączeń z bazą danych podczas tworzenia aplikacji internetowych - jedno z nich wykorzystuje 99% czasu na działania związane z użytkownikami, z ograniczonymi uprawnieniami, a drugie służy do funkcji administratora (usuń użytkowników itp.).
W kilku przypadkach, w których instaluję pakiet innej osoby, zainstaluję dwie instancje ... instancję publiczną, która ma dostęp tylko do bazy danych, aby wykonywać ogólne czynności związane z typem użytkownika, a drugą instancję ograniczoną do adresu IP moja lokalna podsieć (być może nawet na innym komputerze), która musi być używana do wszelkich działań typu „admin”. Żaden z nich nie ma dostępu do modyfikowania tabel itp. Wolę jednak korzystać z rodzimych narzędzi bazy danych, niż pozwolić aplikacji internetowej na uruchamianie własnych zadań aktualizacji, które nie zostały jeszcze sprawdzone.
Możesz jednak pójść o krok dalej i dodać więcej połączeń specjalnie dla danych zadań ... więc zadania tworzenia i zarządzania hasłami przechodzą przez użytkownika, który ma dodatkowe uprawnienia w tabelach użytkowników, logowanie ma uprawnienia do uwierzytelniania bazy danych i niewiele więcej itd.
W ten sposób, jeśli dojdzie do ataku polegającego na wstrzyknięciu sql, na większości stron internetowych nie jest w stanie zrobić nic znaczącego - nie widzi skrótów haseł, nie może dodać nowego użytkownika administratora (nie to, że byłby w stanie to zrobić cokolwiek zresztą), itp. To nadal nie pomoże, jeśli uda im się zdobyć powłokę na twoim komputerze, ale spowolni je.