Ankündigung

Einklappen
Keine Ankündigung bisher.

Sicheres JavaScript ? - Wert an Datenbank übermitteln ohne Manipulation

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Sicheres JavaScript ? - Wert an Datenbank übermitteln ohne Manipulation

    Moin zusammen,

    ich mal wieder mit einer Frage die ich so nicht richtig verstehe wenn ich danach Suche.
    Ich möchte gerne etwas ziemlich primitives versuchen.
    Dabei soll ein Button mit "OnClick" gedrückt werden und die function soll folgendes machen.

    "Addiere +1 auf ein wert und sende diesen an die DB"

    Soweit so gut... Das alles ist ja noch recht einfach.

    Nur jetzt ist es ja so, dass man diesen Code auch mit diversen Programmen oder eben über den Browser verändern kann.
    Das heißt, dass der User ja auch bspw. +2 daraus machen könnte.
    Und genau das möchte ich verhindern.

    Nun habe ich schon nach diversen Möglichkeiten gesucht, konnte aber daraus nicht schlau werden oder eben halt war nicht das
    was ich eigentlich suchte.

    Bsp.: Den Wert mit irgendeiner Methode verschlüsseln und wieder entschlüsseln oder so.

    Nun ja... Wie mache ich also am besten so ein Script, dass man nicht so verändern kann ?
    Denn der Wert wird ja in einer Datenbank gespeichert und wenn derjenige sich Lokal da +100000 setzt dann ist er ja schnell bei dem Wert 1 Millionen z.B.
    und das möchte ich gerne verhindern.

    Ich hab noch im Hinterkopf das sowas mit Zeitwerten oder so funktionieren soll. Stimmt das und wenn ja wie ?

    Danke für eure Zeit.


  • #2
    Da gibt es verschiede Lösungsansätze. Hast Du mal diese angeschaut:

    https://developer.mozilla.org/de/doc...sessionStorage

    https://developer.mozilla.org/de/doc...w/localStorage

    Oder vielleicht dann besser Serverseitig?

    Kommentar


    • #3
      Das kannst du nicht verhindern. du musst sensorseitig immer die Parameter die ankommen auf Zeichenlänge, Typ und Plausibilität überprüfen.
      Auch ein verschlüsseln hilft dir hier nicht, da der Code ja offen einsehbar im Browser vorliegt, dann wird eben vor dem verschlüsseln manipuliert und abgeschickt.

      Kommentar


      • #4
        Das heißt, dass der User ja auch bspw. +2 daraus machen könnte.
        Zitat von strub Beitrag anzeigen
        Da gibt es verschiede Lösungsansätze. Hast Du mal diese angeschaut:

        https://developer.mozilla.org/de/doc...sessionStorage

        https://developer.mozilla.org/de/doc...w/localStorage
        Wieso sollte da das helfen:
        https://stackoverflow.com/questions/...sessionstorage

        Bsp.: Den Wert mit irgendeiner Methode verschlüsseln und wieder entschlüsseln oder so.
        verschlüsseln geht, ist zwar scher aber bringt auch nicht so viel.
        https://github.com/bitwiseshiftleft/sjcl

        schick doch einfach ein 1 an den server, welcher die adition vollführt, mit dem in der DB gespeicherten werten ?

        Kommentar


        • #5
          Die Frage wurde falsch gestellt. Du solltest eher erklären welches Problem du lösen willst, und nicht den falschen Lösungsweg erklären, den du dir ausgedacht hast.

          Weil die Antwort auf die Frage, wie kann man den Client daran hindern Werte zu manipulieren lautet: gar nicht. Man sollte dem Client erst gar nicht die Möglichkeit bieten Werte zu manipulieren.

          Kommentar


          • #6
            Session Storage: Wieso sollte da das helfen:
            Da hast du natürlich recht. Wäre ja nur gewessen, um ein einfaches Doppelklicken zu verhindern. Natürlich kann man dass jedoch austricksen.

            Deshalb habe ich ja auch noch erwähnt:

            Oder vielleicht dann besser Serverseitig.

            Kommentar


            • #7
              Zitat von hellbringer Beitrag anzeigen
              Die Frage wurde falsch gestellt. Du solltest eher erklären welches Problem du lösen willst, und nicht den falschen Lösungsweg erklären, den du dir ausgedacht hast.

              Weil die Antwort auf die Frage, wie kann man den Client daran hindern Werte zu manipulieren lautet: gar nicht. Man sollte dem Client erst gar nicht die Möglichkeit bieten Werte zu manipulieren.
              Na wie soll ich das sonst erklären ?
              Ich möchte nun mal bei einem klick auf ein Button +1 machen und dabei wird der Wert punkt um +1 gesetzt. (0 +1 = 1 +1 = 2 +1 = 3 usw.)
              Der neue Wert "punkt" steht dann wieder in der DB.

              Problem halt ist, wenn ich nun am Script einfach sage "du sollst +1 auf +100 machen" dann macht er ja "0 +100 = 100 +100 = 200 usw" und genau das will ich verhindern.

              Nehmen wir einfach mal ein "Cookie Klicker" verschnitt. Halt nix besonderes.

              Oder vielleicht dann besser Serverseitig.
              Wie meinst du das genau ? ... Serverseitig versteh ich jetzt PHP und dann refresht ja jedes mal die Seite (also muss man) um ja den neuen Wert zu sehen. Oder ?

              Kommentar


              • #8
                Zitat von PlatinSecurity Beitrag anzeigen
                Na wie soll ich das sonst erklären ?
                Ich möchte nun mal bei einem klick auf ein Button +1 machen und dabei wird der Wert punkt um +1 gesetzt. (0 +1 = 1 +1 = 2 +1 = 3 usw.)
                Der neue Wert "punkt" steht dann wieder in der DB.
                Und was ist, wenn jemand 1000mal auf den Button klickt? Ist ja dann nicht viel anders, als würde er +1 durch +1000 ersetzen.

                Zitat von PlatinSecurity Beitrag anzeigen
                Problem halt ist, wenn ich nun am Script einfach sage "du sollst +1 auf +100 machen" dann macht er ja "0 +100 = 100 +100 = 200 usw" und genau das will ich verhindern.
                Warum nicht fix am Server +1 rechnen? Warum willst du +1 vom Client übergeben?

                Zitat von PlatinSecurity Beitrag anzeigen
                Nehmen wir einfach mal ein "Cookie Klicker" verschnitt. Halt nix besonderes.
                Was ist ein "Cookie Klicker"?

                Kommentar


                • #9
                  Zitat von hellbringer Beitrag anzeigen

                  Und was ist, wenn jemand 1000mal auf den Button klickt? Ist ja dann nicht viel anders, als würde er +1 durch +1000 ersetzen.



                  Warum nicht fix am Server +1 rechnen? Warum willst du +1 vom Client übergeben?



                  Was ist ein "Cookie Klicker"?
                  Zu 1.) So oft wie man will je schneller desto besser für den Spieler am ende.
                  Zu 2.) Da man das +1 später auch auf bspw. +5 updaten kann. (Gut das wäre auch mit PHP machbar aber wie verhindert man mit PHP ein reload und sieht trotzdem das neue Ergebnis ?)
                  Zu 3.) Das ist ein Spiel das mir nur gerade eingefallen ist als vergleich. (Und nein ich will das nicht machen. Ist halt nur so ne ähnliche funktion)

                  EDIT zu 1.) war wegen deinem vor updatet "
                  Du hast das nicht wirklich ausdefiniert. Wie oft in welchem Intervall darf auf den Button geklickt werden?"

                  Kommentar


                  • #10
                    Zitat von PlatinSecurity Beitrag anzeigen
                    Zu 1.) So oft wie man will je schneller desto besser für den Spieler am ende.
                    Du weißt aber schon, dass man den Browser auch beliebig automatisch klicken lassen kann? Wenns sein muss 1000mal pro Sekunde.

                    Zitat von PlatinSecurity Beitrag anzeigen
                    Zu 2.) Da man das +1 später auch auf bspw. +5 updaten kann. (Gut das wäre auch mit PHP machbar aber wie verhindert man mit PHP ein reload und sieht trotzdem das neue Ergebnis ?)
                    Mit AJAX.

                    Zitat von PlatinSecurity Beitrag anzeigen
                    Zu 3.) Das ist ein Spiel das mir nur gerade eingefallen ist als vergleich. (Und nein ich will das nicht machen. Ist halt nur so ne ähnliche funktion)
                    Kenn ich halt nicht. Werden wohl die wenigsten kennen.

                    Kommentar


                    • #11
                      Du weißt aber schon, dass man den Browser auch beliebig automatisch klicken lassen kann? Wenns sein muss 1000mal pro Sekunde.
                      Wusst ich nicht. Wie soll das gehen ?

                      Mit AJAX.
                      Ja gut aber kann man das nicht auch Manipulieren ? ... Steht doch auch im "<script></script>" bereich ?

                      Kenn ich halt nicht. Werden wohl die wenigsten kennen.
                      Naja ist schon sehr bekannt. Egal. ^^

                      Kommentar


                      • #12
                        Zitat von PlatinSecurity Beitrag anzeigen
                        Wusst ich nicht. Wie soll das gehen ?
                        Mit JavaScript.

                        Zitat von PlatinSecurity Beitrag anzeigen
                        Ja gut aber kann man das nicht auch Manipulieren ? ... Steht doch auch im "<script></script>" bereich ?
                        Deswegen sollst du am Server auch immer prüfen, ob der Client glaubwürdige Daten übergibt und nicht alles ungeprüft fressen.

                        Der Server muss ja wissen was der Client darf und was er nicht darf. Wenn der Client etwas versucht, was er nicht darf, dann quittiere diese Aktion mit einem Fehler.

                        Kommentar


                        • #13
                          Zitat von hellbringer Beitrag anzeigen
                          Kenn ich halt nicht. Werden wohl die wenigsten kennen.
                          Hab ich für Dich recherchiert
                          https://javasnake.neocities.org/cookie/

                          macht es ohne ajax, aber mit einer art pseudo brute force.

                          Kommentar


                          • #14
                            Deswegen sollst du am Server auch immer prüfen, ob der Client glaubwürdige Daten übergibt und nicht alles ungeprüft fressen.
                            Wie soll man "glaubwürdige Daten" überprüfen ?

                            Meinst du damit den USER-AGENT und sowas in der art ?

                            Kommentar


                            • #15
                              Zitat von tomBuilder Beitrag anzeigen

                              Hab ich für Dich recherchiert
                              https://javasnake.neocities.org/cookie/

                              macht es ohne ajax, aber mit einer art pseudo brute force.
                              Was ist ein "pseudo brute force"

                              Kommentar

                              Lädt...
                              X