TLDR : Så lenge nettverkstilkoblingen til DB er sikker, og så lenge saltede hashes er lagret i tabellene dine, er det greit å ringe en lagret prosedyre med vanlig tekstpassord. Jeg tror tid og krefter blir brukt på å beskytte databasen mot uautorisert tilgang av den typen som gjør det mulig å få spor av lagrede prosedyreanrop.
Først forstår jeg scenariet det er snakk om angriper kan gjenopprette passordet for ren tekst ved å gå gjennom parameterverdier som er sendt til den lagrede prosedyren, hvorav den ene er ren tekstpassord, og deretter bruke passordet til å kompromittere en brukerkonto i applikasjonen.
Hvis det er riktig da er den eneste rent tekniske løsningen jeg ser å implementere en PK-ordning innenfor omfanget av den lagrede prosedyren, slik at passordet må krypteres med den lagrede prosedyrens offentlige nøkkel, krypteringsteksten sendes til den lagrede prosedyren, og parameterverdien deretter dekrypteres av den lagrede proc selv med en privat nøkkel før den brukes. (Eller bedre, som TLS selv, kan du forhandle om en Diffie-Hellman-utveksling ved hjelp av andre lagrede procs, og bruke en øktnøkkel.) Med mindre du kan finne noen åpen kildekode-implementering av dette der ute, som du stoler på, og bruker den, dette blir et veldig tungt løft. Og du må beskytte den private nøkkelen nå.
Men vurder hva du virkelig prøver å beskytte deg mot. I dette scenariet kan angriperen lese dine lagrede prosedyreanrop og få verdiene som er sendt inn. Ville noen brukere med dette privilegiet også ha lesetilgang til den private nøkkelen du bruker, eller velge / sette inn / oppdatere tilgang til tabellene dine? I så fall, selv om du går gjennom arbeidet med å implementere PKI på lagret prosedyrenivå, blir innsatsen din umiddelbart beseiret.
La meg også svare spesifikt på ideen om å hashe passordet, med salt selvfølgelig, og overføre den hashverdien til den lagrede prosedyren. Hvis du gjør dette, er den hashverdien nå passordet. Alt en angriper må gjøre, hvis han virkelig kan lese de lagrede proc-parametrene dine, er å gjenta disse parametrene nøyaktig slik han ser at de kompromitterer systemet. Han trenger faktisk ikke å reversere hasjen og lære hva det "vanlige" passordet er; hashverdien er passordet for ren tekst nå. Så denne ordningen har ingen effekt.