Ankündigung

Einklappen
Keine Ankündigung bisher.

Formular: Komischen Tipp gefunden... Was soll das?

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

  • Formular: Komischen Tipp gefunden... Was soll das?

    Hallo Coders

    Wollte man in einem Formular Werte mit übertragen ohne Einsichtnahme des User war bisher immer
    HTML-Code:
    <input type = "hidden">
    die Vorgehensweise.

    Nun habe ich auf www.chromium.org im Bereich 'developers' erstmals eine andere Vorgehensweise gefunden:
    HTML-Code:
    <style> #emailfield { display: none; } </style>
    <form id="login" action="login.php" method="post">
    <input id="emailfield" type="text" value="[email protected]" autocomplete="username">
    Es wird also dem 'input' eine ID verpasst und per css als 'hidden' deklariert...

    Meine Frage an euch:

    Warum geht man diesen Weg wenn doch das Attribut 'hidden' direkt im Tag <input> verwendet werden kann?
    Hat es evtl. sicherheitsrelevante Gründe diesen Umweg zu gehen?
    Ist das Attribut evtl. 'deprecated' (nach meinen Recherchen nicht...)

    Muss doch einen Grund haben warum hier dieser "Bypass" am Standard vorbei empfohlen wird...

    Danke vorab...
    ________
    Megabyte66
    ________

  • #2
    Die Kontaktformulare werden gern für SQL Injektion verwendet. Du kannst dir vorstellen das es nicht gerade gut für die Eigner ist.
    Wir bauen die Kontaktformulare in html5 nach und vermeiden so die sql injektoren
    Zuletzt geändert von arnego2; 09.09.2021, 14:50.
    https://arnego2.com <Webseiten, Umbau ab €80, Serverumzug ab €50>

    VPS 8GB RAM 50 GB ROM < Server in der EU, 1rstes Jahr €38

    Kommentar


    • #3
      Hi,
      die Antwort könnte im autocomplete liegen. Ich bin mir nicht sicher aber vermute, dass Inhalte in hidden Felder nicht verändert werden können.

      Gruß
      Ingo
      Ingo Webdesign

      Kommentar


      • #4
        Moin MegaByte, es hat mehrere Gründe warum und wozu es ein extra Feld gibt mit Type hidden. Der erste Grund ist du kannst einfach ein Feld damit erstellen ohne es extra mit CSS verstecken zu müssn. Das mit CSS ist nur ein Workaround. Der nächste Grund ist die Syntax - diese sieht vor Formulare logisch aufzubauen, dazu gehören auch Inhalte bzw. Felder die nicht bearbeitet werden sollen oder nicht sichtbar sind. Der dritte Grund sind in Browser integrierte Passwort-Vaults die automatisch diese Felder ausfüllen könnten, aber Hidden-Felder bleiben davon befreit.

        Es gibt genug Gründe wozu es diese Art von Formularfeldern gibt. Und noch ein Hinweis zu Code-Injection und SQL-Injection: Hidden-Felder verhindern keinen Code-Injection oder SQL-Injection. Jeder der ein bischen Ahnung hat kann diese Felder selbst bearbeiten und damit die Daten fälschen oder manipulieren, sodass Schadcode hochgeladen werden kann. Deswegen ist es eine Pflicht auf Serverseite die Webseite davor abzusichern. Eine Absicherung davor bringt rein garnichts, da man http-Requests auch ohne Browser abschicken kann.

        Es ist also der falsche Weg andere Arten von Feldern zu verwenden als Hidden-Elemente, da es extra dafür gemacht wurde diesen Job zu übernehmen. Ich nehme auch nicht vier Motorräder und versuche ein Auto daraus zu basteln. Zwar fährt es wenn mans hinbekommen hat, es ist aber überflüssig.

        Gruss Localfu
        PS: Wenn euch mein Post gefallen hat, dann lasst mir ein "Daumen hoch" da!

        Kommentar


        • #5
          Erst mal danke für eure Rückmeldung

          Die 'bösen' Injects könnte ich sowohl bei Standard 'input hidden' als auch bei Variante 'display:none' basteln.
          Egal welche Variante ich verwenden würde - es hätte hier null Schutzfunktion. Daher - exakt Lucalfu - IMMER alles was reinkommt erstmal checken. Bin ich voll dabei!

          Der Sinn der versteckten Inputs ist mir auch klar. Ich verwende diese Funktion auch recht oft.

          Aber der Einwand von Ingo leuchtet mir (halb) ein (Funktion von 'autocomplete'). Aber auch irgendwie unlogisch: Mit welchem Wert soll den 'autocompleted' werden wenn doch bei 'hidden' keine Eingabe erfolgt (und auch in der Vergangenheit keine Eingabe gemacht werden konnte). Aus welchem 'Pool' will dann 'autocomplete' seine Vervollständigung herholen?

          Nur zum Verständnis: Ich habe damit aktuell kein Problem. Aber wenn ich Code lese dann macht es mich 'hibbelig' wenn da eine Passage ist die ich nicht nachvollziehen kann. Und wenn das dann noch eine renommierte Quelle macht es mich umso 'hibelliger' :-)
          ________
          Megabyte66
          ________

          Kommentar


          • #6
            Zitat von arnego2 Beitrag anzeigen
            Die Kontaktformulare werden gern für SQL Injektion verwendet. Du kannst dir vorstellen das es nicht gerade gut für die Eigner ist.
            Wir bauen die Kontaktformulare in html5 nach und vermeiden so die sql injektoren
            Was hat denn seine Frage mit SQL Injektion zu tun? Genau! NIX! :-D
            Wie willst du denn mit html5 SQL Injektion vermeiden?

            Sorry, ich brech gerade ab vor lachen, danke. :-D

            Kommentar


            • #7
              Zitat von Testie Beitrag anzeigen

              Was hat denn seine Frage mit SQL Injektion zu tun? Genau! NIX! :-D
              Wie willst du denn mit html5 SQL Injektion vermeiden?

              Sorry, ich brech gerade ab vor lachen, danke. :-D
              Das stimmt, HTML5-Elemente schützen nicht vor einer SQL-Injection.
              PS: Wenn euch mein Post gefallen hat, dann lasst mir ein "Daumen hoch" da!

              Kommentar


              • #8
                Testie

                Meine Frage hatte gar nichts mit SQL-Injections zu tun. Dies war eine Antwortmöglichkeit ob es damit zu tun haben könnte. Das solche Injections nur serverseitig abgefangen können ist ja logisch.

                Meine Frage war schlicht warum Google Chrome for Developers einen <input> mit css (display:none) versteckt statt mit dem eigentlich dafür vorgesehenem Attribut 'hidden'. Ich denke mal dass die sich da schon Gedanken gemacht haben es so zu realisieren da es vom Code ja eher ein Mehraufwand darstellt - konnte aber bis jetzt nichts finden warum sie das dafür vorgesehene Attribut aufwendig vermeiden. Daher steht für mich die Frage im Raum ob das Attribut 'hidden' irgendwelche Nachteile hat die sie so kompensieren wollen...
                ________
                Megabyte66
                ________

                Kommentar


                • #9
                  Hi Megybyte, das es gibt die Möglichkeit ein Next-Step-Verfahren daraus zu basteln, wobei die Felder nur temporär ausgeblendet werden, um Zwischenschritte auszublenden. Eine andere Logik hat das nicht. Selbst Internet Explorer 9 unterstützt hidden-Formialr-Felder.

                  Gruss Localfu
                  PS: Wenn euch mein Post gefallen hat, dann lasst mir ein "Daumen hoch" da!

                  Kommentar


                  • #10
                    Zitat von Testie Beitrag anzeigen

                    Was hat denn seine Frage mit SQL Injektion zu tun? Genau! NIX! :-D
                    Wie willst du denn mit html5 SQL Injektion vermeiden?

                    Sorry, ich brech gerade ab vor lachen, danke. :-D
                    Die Daten gehen nicht über einen Datenbank.
                    https://arnego2.com <Webseiten, Umbau ab €80, Serverumzug ab €50>

                    VPS 8GB RAM 50 GB ROM < Server in der EU, 1rstes Jahr €38

                    Kommentar


                    • #11
                      Zitat von arnego2 Beitrag anzeigen

                      Die Daten gehen nicht über einen Datenbank.
                      Wie meinst du das arnego2, was geht nicht über die Datenbank?
                      PS: Wenn euch mein Post gefallen hat, dann lasst mir ein "Daumen hoch" da!

                      Kommentar


                      • #12
                        Zitat von Localfu Beitrag anzeigen

                        Wie meinst du das arnego2, was geht nicht über die Datenbank?
                        das Kontaktformular in htmt5
                        https://arnego2.com <Webseiten, Umbau ab €80, Serverumzug ab €50>

                        VPS 8GB RAM 50 GB ROM < Server in der EU, 1rstes Jahr €38

                        Kommentar


                        • #13
                          Also ein Kontaktformular auch mit HTML5-Standard erstellt, schützt nicht vor SQL- oder Codeinjection. Das ist ist ein trugschluss. Es muss immer serverseitig die Inhalte auf Richtigkeit validiert werden. Einen Schutz clientseitig ist nicht möglich. Es können Seiten clientseitig manipuliert werden.
                          PS: Wenn euch mein Post gefallen hat, dann lasst mir ein "Daumen hoch" da!

                          Kommentar


                          • #14
                            Zitat von Localfu Beitrag anzeigen
                            Also ein Kontaktformular auch mit HTML5-Standard erstellt, schützt nicht vor SQL- oder Codeinjection. Das ist ist ein trugschluss. Es muss immer serverseitig die Inhalte auf Richtigkeit validiert werden. Einen Schutz clientseitig ist nicht möglich. Es können Seiten clientseitig manipuliert werden.
                            SQL Injection geht über eine Datenbase Verbindung, die Validierung der html5 Kontaktform geht nicht über die Datenbank.

                            https://www.w3schools.com/sql/sql_injection.asp
                            https://arnego2.com <Webseiten, Umbau ab €80, Serverumzug ab €50>

                            VPS 8GB RAM 50 GB ROM < Server in der EU, 1rstes Jahr €38

                            Kommentar


                            • #15
                              arnego2 Hi Arnego, du verstehst was falsch. Ein HTML-Dokument mit einem Formular hat garnichts mit der Datenbank am Hut. Das wird serverseitig verarbeitet und bei Bedarf an eine Datenbank geschickt. Das hat auch nichts mit dem HTML5-Stndard zu tun. Der Client sendet die Daten nur. Eine Überprüfung der Daten ist aus Sicht der Sicherheit nur auf dem Server möglich. Ich als User kann Inhalte egal ob HTML5 oder nach einem anderem Standard Inhalte einer Seite manipulieren.

                              Ich kann auch ohne Browser einen HTTP/S-Request senden und empfangen und sogar so tun als würde ich das als Browser tun. Oder ich erstelle ein eigenes HTML-Dokument mit der gleichen Ziel-URL. Es geht darum das kein HTML-5 vor Manipulation von Daten clientseitig schützt. Das ist ein Fakt.

                              Die Sicherheit beginnt erst auf dem Server, wo die Daten verarbeitet werden. Hier müssenv gefährliche Inhalte validiert, erkannt und ausgenommen werden. HTML5 bietet eine Validierung auf dem Client an, aber dies lässt sich spielerisch entfernen oder abändern. Dafür muss man nicht viel Wissen mit sich bringen.

                              PS: Jeder der einen Browser hat wie Firefox, Chrome etc. kann mit der Konsole via Ajax Daten senden und auch empfangen. Das ist kinderleicht und hat nix mit Sicherheit am Hut. Natürlich gibt es vielleicht paar Sicherheitsmechanismen, aber die kann man entweder mit paar Einstellungen verändern oder ein entsprechendes Plugins installieren.

                              Gruss Localfu
                              PS: Wenn euch mein Post gefallen hat, dann lasst mir ein "Daumen hoch" da!

                              Kommentar

                              homepage-forum.de - Hilfe für Webmaster! Statistiken

                              Einklappen

                              Themen: 56.938   Beiträge: 431.246   Mitglieder: 28.750   Aktive Mitglieder: 80
                              Willkommen an unser neuestes Mitglied, Herman.

                              Online-Benutzer

                              Einklappen

                              251 Benutzer sind jetzt online. Registrierte Benutzer: 2, Gäste: 249.

                              Mit 3.502 Benutzern waren am 23.01.2020 um 17:20 die meisten Benutzer gleichzeitig online.

                              Die neuesten Themen

                              Einklappen

                              Die neuesten Beiträge

                              Einklappen

                              Lädt...
                              X