Bezpieczeństwo Javascript: czy przechowywanie poufnych danych w funkcji samo wywołującej jest bezpieczniejsze niż pliki cookie?

Wiem, że zabezpieczenia są albo nieistniejące, albo bardzo trudne w JavaScript po stronie klienta. Wiem, że mój kod po stronie serwera powinien ostatecznie decydować o tym, komu dane są przekazywane lub akceptują dane.

To powiedziawszy, czy jest to w porządku, aby to zrobić. Przez „okay” mam na myśli, jeśli to była metoda zastosowana w jakiejś nowej popularnej modnej fajnej aplikacji internetowej. Czy mogę spać w nocy, wiedząc, że nie zobaczę „Super fajnej aplikacji internetowej włamanej, zmień swoje hasła!” w całej HN i Reddit (lub w innych źródłach informacji, na których zależy ludziom) w wyniku tej implementacji.

Jeśli nie jest bezpieczny. Czemu? W jaki sposób można uzyskać te informacje (nazwę użytkownika i hasło)?

Jeśli jest bezpieczny? Jak bardzo jesteś pewny? Dlaczego jest bezpieczny? Co powstrzymuje mnie przed otrzymaniem tych informacji poza moją oczywistą niezdolnością w tej chwili.

Częściowe odpowiedzi są mile widziane. Po prostu szukam lepszego zrozumienia.

EDYTOWAĆ

Myślę o przypadku niektórych próbujących ukraść dane uwierzytelniające użytkowników. Rozumiem, że pliki cookie są niepewne, ponieważ 1.) inne javascripty (przez XSS lub cokolwiek innego) mogą uzyskać do nich dostęp, a ponieważ 2.) są przekazywane w sposób jawny. I rysunek SSL zajmie się drugim problemem i pozwala po prostu założyć, że jestem w stanie zapobiec XSS. Teraz wydaje się, że pliki cookie są teraz bezpieczne, prawda?

Zdaję sobie sprawę z niektórych rzekomych luk w przeglądarce, które pomagają w zabezpieczeniu plików cookie. To sprawiło, że zadałem to pytanie. Biorąc pod uwagę wszystkie rzeczy, które sprawiają, że ciasteczka są niepewne, czy jest to (kod poniżej) lepsze?

http://jsfiddle.net/KTastrophy/vXEjm/1/ LUB zobacz poniższy kod (testowany tylko w Chrome)

<!DOCTYPE html>
<html>
    <head>
    </head>
    <body>
        <form id="login">
            <div>
                <label for="username">Username</label>
                <input id="username" name="username" type="text" />
            </div>
            <div>
                <label for="password">Password</label>
                <input id="password" name="password" type="password" />
            </div>
            <div>
                <input id="submit" name="submit" type="submit" value="Login" />
            </div>
        </form>
    </body>
    <script type="text/javascript">
        ;(function () {
            "use strict";
            var login, user = {};
            login = document.getElementById("login");
            login.onsubmit = function (event) {
                event.preventDefault();
                user.username = document.getElementById("username").value;
                user.password = document.getElementById("password").value;

                /*
                    use the username and password here to do
                    an API request over SSL using HTTP Auth
                 */
            }
        }());
    </script>
</html>

questionAnswers(5)

yourAnswerToTheQuestion