Czy przechowywanie hasła użytkownika w zmiennej javascript w przeglądarce powoduje ujawnienie jakichkolwiek luk w zabezpieczeniach wykraczających poza zwykłe luki w zabezpieczeniach klienta opartego na przeglądarce?Trzymanie hasła w zmiennej javascript - implikacje bezpieczeństwa?
Rozważ ten fragment jako prosty przykład - jsfiddle here
<label for="password">Password</label>
<input type="password" id="password"/><br/><br/>
<button type="button" id="pwdButton">Store password in window.password</button>
<script>
function getContentsOfPasswordField() {
return jQuery("input#password").val();
}
jQuery("button#pwdButton").on("click", function() {
window.password = getContentsOfPasswordField();
alert("'" + password + "' stored in global var window.password")
});
</script>
W tym przykładzie zmienna hasło jest globalny i utrzymuje się przez cały okres użytkowania strony, po prostu zrobić to tak otwarty do ataku, jak to możliwe i podać najgorszy możliwy scenariusz. Być może ograniczenie zakresu/czasu życia zmiennej może ochronić ją przed niektórymi klasami ataków?
Atak, który przychodzi od razu na myśl, to XSS, ale wtedy, jeśli klient jest podatny na XSS, atakujący może odczytać hasło poprzez i tak logowanie klucza (patrz this), więc trzymanie go w zmiennej doesn ' t, o ile widzę, zwiększa podatność na ataki XSS.
Uwaga punkt pytaniem nie jest to, czy robi to zła praktyka, jest to bardziej fundamentalne pytanie o stronie klienta Web App bezpieczeństwa :)
Po wpisaniu hasła nie należy "pozostać" na stronie wprowadzania hasła. 1. Możliwość innego oprogramowania na hoście odczytującym hasło klienta (przez odczytanie pamięci przeglądarki), jest to problem po stronie klienta i zawsze może być stosowany. 2. Możliwość dowolnego rozszerzenia przeglądarki odczytującego hasło. 3. Możliwość dowolnego skryptu na tej samej stronie odczytującego hasło. –
Ale czy któryś z tych potencjalnych ataków jest bardziej możliwy, ponieważ hasło jest przechowywane w zmiennej? Jeżeli złośliwe oprogramowanie stron trzecich może uzyskać dostęp do maszyny wirtualnej javascript - czy może to być nie tylko keylog czy odczytać hasło, mimo że jest ono wprowadzane do hasła? – davnicwil
ustawienie go na "okienku" może ominąć wszelkie wbudowane zabezpieczenia (np. Dla źródła), jeśli zostały zaimplementowane przez przeglądarkę klienta. Jeśli zostawisz otwarte okno swojego domu, możesz zostać okradziony, ale to nie znaczy, że powinieneś również zostawić otwarte drzwi. –