Robert: HTML-Code herausfiltern

Hallo Leute,

ich such ne ASP-Lösung, wie man HTML, PHP, ASP, JavaScript, ... -Code aus einem Eingabefeld herausfiltern kann. Alternativ kann auch eine Fehlermeldung ausgegeben werden. Ich will aber der Einfachheit halber nich jeden Tag einzeln eingeben, also sollte irgendwie alles, was mit "<" oder so beginnt wahrscheinlich gefiltert werden.

Would be happy if anyone could help me - I know ASP suck ;-)

Robert

  1. Hallo Robert

    ich such ne ASP-Lösung, wie man HTML, PHP, ASP, JavaScript, ... -Code aus einem Eingabefeld herausfiltern kann.

    Am bester ersetztst du alle '<' und '>' durch irgend etwas. Das funktioniert folgendermassen:

    Dim strEingabe
    strEingabe = Request.Form("deinEingabeFeld")
    strEingabe = Replace(strEingabe,"<","<")
    strEingabe = Replace(strEingabe,">",">")

    Jetzt kannst du den String problemlos in eine (ASP-)Datei schreiben ohne dass da Code ausgeführt werden kann. Es gibt aber AFAIK noch eine andere Möglichkeit (mit Fragezeichen oder so) ums ASP-Code einzubinden. Diese musst du natürlich auch filtern.

    MfG

    Tom2

    1. Hallo Tom2,

      Am bester ersetztst du alle '<' und '>' durch irgend etwas. Das funktioniert folgendermassen:

      Dim strEingabe
      strEingabe = Request.Form("deinEingabeFeld")
      strEingabe = Replace(strEingabe,"<","<")
      strEingabe = Replace(strEingabe,">",">")

      Hmm, aber des funktioniert irgendwie ned, mein <font>-Tag wird trotzdem geschrieben...

      Jetzt kannst du den String problemlos in eine (ASP-)Datei schreiben ohne dass da Code ausgeführt werden kann. Es gibt aber AFAIK noch eine andere Möglichkeit (mit Fragezeichen oder so) ums ASP-Code einzubinden. Diese musst du natürlich auch filtern.

      Höh? ASP-Code beginnt mit <% dachte ich seither...

      Kannst du mir nochmal weiterhelfen? *smile*

      Robert

      1. Am bester ersetztst du alle '<' und '>' durch irgend etwas. Das funktioniert folgendermassen:

        Hmm, aber des funktioniert irgendwie ned, mein <font>-Tag wird trotzdem geschrieben...

        Hi!

        ja, der <font> Tag wird auch wieder als <font> im Browser erscheinen, weil der Browser ja diese benannten Zeichen < und > als < und > umsetzt, jedoch im Quelltext steht dann <font>
        und das wird nicht mehr geparsed.

        Unter ASP gibt es noch die Server-Funktion "Server.HTMLEncode" damit erschlägst du alle Sachen automatisch, ohne erst viele "Replace"'s schreiben zu müssen.

        ... I know ASP suck ;-)

        ASP sucks überhaupt nicht. ;-)

        PHP und ASP Code-Snippets sind ja durch <? ?> oder <% %> gekennzeichnet, solche sachen werden eigentlich durch die Funktion Server.HTMLEncode auch bereits entschärft.

        HTH, Gruß, Frank

        1. Hallo!

          Unter ASP gibt es noch die Server-Funktion "Server.HTMLEncode" damit erschlägst du alle Sachen automatisch, ohne erst viele "Replace"'s schreiben zu müssen.

          Hmm, die Funktion scheint mehr oder weniger echt geil zu sein, aber ich schaff es nicht, Server.HTMLEncode auf <%=RS("Eintrag")%> anzuwenden.

          Zur Info:
          Set MyConn = Server.CreateObject("ADODB.Connection")
          Set RS = MyConn.Execute(SQL_query)

          Wie mach ich es nun, dass Server.HTMLEncode auf den Inhalt "Eintrag" aus der Datenbank angesetzt wird?

          ASP sucks überhaupt nicht. ;-)

          Ansichtssache - ich bin PHP'ler ;o)

          Thx erstmal!

          Robert

          1. Hmm, die Funktion scheint mehr oder weniger echt geil zu sein, aber ich schaff es nicht, Server.HTMLEncode auf <%=RS("Eintrag")%> anzuwenden.

            wieso nicht?
            <% response.write Server.htmlencode(rs("Eintrag")) %>

            ASP sucks überhaupt nicht. ;-)

            Ansichtssache - ich bin PHP'ler ;o)

            es ist beides schön...
            asp hat vielleicht gewisse nachteile im funktionsumfang, aber innerhalb eines firmennetzwerkes sind funktionen sehr nützlich, die mir direkt aus dem ActiveDirectory Userinformationen ranholen...
            so kann ich innerhalb meiner admin.-anwendung sehen, wer sich wann wo eingeloggt hat, zeiten über anmeldungen... konten entsperren...
            nun ja, dies ist sicher auch über die normalen admintools möglich, aber in meiner anwendung kann ich gleich informationen über die geräte+gerätehistorie anzeigen lassen und weiß sofort über den problemrechner(user) bescheid...
            diese totale integration der scriptsprachen und zugriffsmöglichekeiten auf windowskomponenten/microsoft-software macht asp schon sehr mächtig... nach einer weile arbeit mit asp versteht man erst, wie dieses OfficeLogo (das bunte Puzzle) wirklich gemeint ist...

            Odium

            1. Hallo!

              wieso nicht?
              <% response.write Server.htmlencode(rs("Eintrag")) %>

              Syntax Error vom IIS :-(

              asp hat vielleicht gewisse nachteile im funktionsumfang, aber innerhalb eines firmennetzwerkes sind funktionen sehr nützlich, die mir direkt aus dem ActiveDirectory Userinformationen ranholen...
              so kann ich innerhalb meiner admin.-anwendung sehen, wer sich wann wo eingeloggt hat, zeiten über anmeldungen... konten entsperren...
              nun ja, dies ist sicher auch über die normalen admintools möglich, aber in meiner anwendung kann ich gleich informationen über die geräte+gerätehistorie anzeigen lassen und weiß sofort über den problemrechner(user) bescheid...
              diese totale integration der scriptsprachen und zugriffsmöglichekeiten auf windowskomponenten/microsoft-software macht asp schon sehr mächtig... nach einer weile arbeit mit asp versteht man erst, wie dieses OfficeLogo (das bunte Puzzle) wirklich gemeint ist...

              ...

              Robert

          2. Zur Info:
            Set MyConn = Server.CreateObject("ADODB.Connection")
            Set RS = MyConn.Execute(SQL_query)

            Wie mach ich es nun, dass Server.HTMLEncode auf den Inhalt "Eintrag" aus der Datenbank angesetzt wird?

            Was das jetzt mit einer Datenbank zu tun hat, verstehe ich zwar nicht ganz, ich dachte es geht um Eingabefelder...

            Du hast ein Feld namens "Eintrag" in einer Tabelle in deiner DB... okay.

            rohFeldInhalt = rs("Eintrag").Value
            htmlcodiert = Server.HTMLEncode(rohFeldInhalt)

            ASP sucks überhaupt nicht. ;-)
            Ansichtssache - ich bin PHP'ler ;o)

            aha, irgendwo hatte ich neulich mal eine Seite wo PHP'ler und ASP'ler sich darüber gestritten haben, was von beiden besser ist. Da kamen dann genauso qualifizierte Kommentare ohne Hintergrund. Aber das brauch dich nicht stören.

            Thx erstmal!
            Robert

            Bitte, gern geschehen.

            Tschau, Frank

            1. Hallo!

              Was das jetzt mit einer Datenbank zu tun hat, verstehe ich zwar nicht ganz, ich dachte es geht um Eingabefelder...

              ...

              Brauchst du auch net ;-) ich check auch net durch *g*

              Du hast ein Feld namens "Eintrag" in einer Tabelle in deiner DB... okay.

              rohFeldInhalt = rs("Eintrag").Value
              htmlcodiert = Server.HTMLEncode(rohFeldInhalt)

              Das geht (wenn überhaupt) einmal und danach kommt beim Laden der Seite (oder spätestens beim Einspeichern neuer Werte):
              Provider error '80004005'
              Unspecified error

              Sagt viel aus der Error - und die Line (die wo, ich die DB definiert hab). Rechte etc stimmen aber bei der DB

              Robert

              1. Das geht (wenn überhaupt) einmal und danach kommt beim Laden der Seite (oder spätestens beim Einspeichern neuer Werte):
                Provider error '80004005'
                Unspecified error

                Hi nochmal,

                im beim Öffnen von Access DBs sollte man immer USER und PASSWORD mit angeben, egal ob leer oder nicht. Dann sollte der Fehler nicht mehr auftauchen. Das hängt jetzt davon ab, wie du "dich" mit der Datenbank verbindest. ODBC mit DSNs,OLE ....

                Genauere Infos dazu findest du auf www.aspfaq.de

                Gruß, Frank