JavaScript Return Value im Quelltext

12/30/2015 22:18 .SkyneT.#16
Quote:
Originally Posted by .ƒaℓsє. View Post
Wenn ich mich recht erinnere hat kraizy schon mehrere Programme geschrieben wo ein Login verfahren von nöten ist, somit hatte sie auch Umgang mit Cookies.Ich gehe davon aus das das Javascript von nöten ist, sonst hätte kraizy schon cookies verwendet.
Naja, wirklich andere Möglichkeiten hat der Server aber nicht den Loginzustand zu "speichern". Es läuft eigentlich immer so ab:
User/Password wird zum Server gesendet - dieser schaut nach ob der Loginvorgang erfolgreich war und schickt Cookies mit irgendwelchen Zeichenfolgen zurück, welche der Client beim nächsten Seitenaufruf wieder mitsenden muss, um weiterhin eingeloggt zu bleiben.

Im schlimmsten Fall gibt es auf den anderen Seiten noch mehr Javascript welches die Cookies irgendwie modifiziert und der Server dann diese modifizierten Cookies erwartet, dann muss man auch nach dem Login noch etwas Javascript ausführen. Wenn das der Fall ist würde ich auf jeden Fall auf einen Interpreter zurückgreifen da sonst die Performance den Bach runter geht.

Weitere Optimierungen (z.b den Javascript Code in C# nachzubauen) brigen dann eigentlich nichts mehr, da der ganze IO zwischen Server-Client der Flaschenhals wird.
12/30/2015 22:28 vinnce#17
Quote:
Originally Posted by .ƒaℓsє. View Post
Auf irgendeiner weiße ist die Value ja scheinbar wichtig beim Login sonst würde der TE ja einfach Cookies nutzen.
Sei es das die Value im Php dann mit einer Function geprüft wird (z.b die Value generiert durch Uhrzeit o.ä.).
Daher wollte ich den Code auch gerne sehen.
Wenn der Wert beim Login benötigt wird kommt dieser allerdings entweder
aus dem Backend, oder wird per Cookie gesetzt. Die Funktion selbst
dient nur dazu um den eigentlichen Wert zu uglifien, generiert wird dieser
aber nicht im Frontend, sonst könnte OP sich den Wert ja einfach aus einem
Cookie ziehen.
12/30/2015 22:34 Kraizy​#18
Also das ganze läuft folgendermaßen ab:
Beim Aufruf der Login Seite wird /auth/createchallenge/*random chars*/challenge.js aufgerufen (der Link zur .js steht im Quelltext und diesen kann ich auch problemlos in .NET auslesen und aufrufen). So, dort ist dann nun die eigentliche JavaScript Funktion. Diese wollte ich anfangs in .NET einfach nachbauen, war auch schon zur Hälfte fertig - bloß hab ich später gemerkt, dass bei jedem neuen createchallenge die JavaScript Funktion anders aufgebaut ist -> der Ablauf, wie der benötigte Wert generiert wird ist anders. Pseudo:

Code:
Loginaufruf #1

challenge.js:
function bla1()
function bla2()
function bla3()
function bla4()
return value
Code:
Loginaufruf #2

challenge.js
function bla3()
function bla1()
function bla4()
function bla2()
return value
Und entweder steh ich grade komplett auf dem Schlau, oder ich müsste wirklich eine Art JS->NET Converter erstellen, damit meine nachgebaute Funktion auch jedesmal die richtige Reihenfolge zum Generieren hat und somit genauso dynamisch und nicht statisch ist.

Da mir das aber zu blöd ist, wollte ich wie gesagt einfach die JS Funktion aufrufen und den Wert der returned wird auslesen und in NET weiter benutzen. Problem ist hierbei aber, dass ich die Value nicht auslesen kann aus dem Quelltext.

Am Ende, nachdem createchallenge aufgerufen und der Wert generiert wurde, wird dieser Wert mittels Http POST an /auth/verifychallenge weitergeleitet. Das wiederum wäre ja kein Problem für mich, da ich problemlos einen POST an verifychallenge in .NET senden kann, bloß fehlt mir eben der generierte Wert aus createchallenge.

Hier nochmal die Funktion: [Only registered and activated users can see links. Click Here To Register...]

Wie gesagt, nachdem ads_token_js generiert wurde, wird dieser direkt noch im JS zusammen mit _csrf an /auth/verifychallenge gesendet.
12/30/2015 22:54 vinnce#19
Quote:
oder ich müsste wirklich eine Art JS->NET Converter erstellen
Du musst garnichts selbst erstellen, JS Interpreter gibts genug. Du musst auch nicht nach NET
konvertieren, es reicht schon aus wenn du mit einem Interpreter den JS Code der externen Seite
ausführen, und dir dannach den Wert holen kannst.
12/30/2015 23:00 Kraizy​#20
Quote:
Originally Posted by vinnce View Post
Du musst garnichts selbst erstellen, JS Interpreter gibts genug. Du musst auch nicht nach NET
konvertieren, es reicht schon aus wenn du mit einem Interpreter den JS Code der externen Seite
ausführen, und dir dannach den Wert holen kannst.
Sowas habe ich mir gestern schon angeschaut auf diversen Seiten. Die führen zwar problemlos die Funktion aus und generieren den Wert, aber wie genau lese ich diesen am Ende in .NET aus? Dazu bräuchte ich ja wieder den Wert im Quelltext oder nicht?
12/30/2015 23:05 vinnce#21
Quote:
Originally Posted by Kraizy​ View Post
Sowas habe ich mir gestern schon angeschaut auf diversen Seiten. Die führen zwar problemlos die Funktion aus und generieren den Wert, aber wie genau lese ich diesen am Ende in .NET aus? Dazu bräuchte ich ja wieder den Wert im Quelltext oder nicht?
Nein brauchst du nicht. Du kannst den Interpreter auch einfach aus .NET
heraus über die Konsole aufrufen und dir so den Rückgabewert in dein .NET
Programm holen. Wie genau das in .NET best-practice ist kann ich dir nicht
sagen, aber selbst in PHP haben wir Möglichkeiten externe Programme aufzurufen.
12/30/2015 23:09 Kraizy​#22
Ach du meinst ne direkte Anwendung, die ich ausführe? Hab gedacht online wie z.B. [Only registered and activated users can see links. Click Here To Register...]
Das müsste dann wirklich funktionieren, werde ich mir mal anschauen.
03/31/2016 03:37 Shawak#23
Habe mir hier nicht alles genau durchgelesen, aber spricht etwas dagegen den JavaScript mit einer Engine auszuführen?

Beispielsweise hiermit: [Only registered and activated users can see links. Click Here To Register...]
04/08/2016 23:04 #Metho#24
Es gibt noch die möglichkeit JavaScript zu übertragen per URL.
javascript: alert(1);, dazu bräuchtest du aber einen Navigator der dies unterstützt.