Avatar billede shaggy Nybegynder
27. marts 2003 - 17:29 Der er 13 kommentarer og
1 løsning

Validering

Hej alle eksperter. Jeg har en kontakt kode der ligger nogle data ind i en db. Jeg vil gerne have en validering på som siger "stop" hvis der er nogle der forsøger at skrive html eller JavaScripts koder  i inputboksende. Det kunne f.eks. være noget kode der reagerer på tegn som "<" og "{". Uanset så skal det være ASP og gerne passe ind i den kode jeg har lavet indtil videre...


<% if mode = "send" then %>

<%
if Request.form("name") = "Your Name" then Response.Redirect("http://newz.dk")
if Request.form("email") = "Your Email" then Response.Redirect("http://newz.dk")
%>

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../../db/larsbo.mdb")
Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "Select * From tagwall"
rs.Open strSQL, Conn, 1, 3
rs.addnew
rs("name") = Request.form("name")
rs("message") = Request.form("message")
rs("email") = Request.form("email")
rs("time") = Now()
rs.update
rs.Close
Set rs = Nothing
Conn.Close
set Conn = Nothing
Response.Redirect("index.asp")
%>
   
<% end if %>
Avatar billede oasen Nybegynder
27. marts 2003 - 17:40 #1
Så kan brugeren jo ikke skrive < eller >...
Hvad er idéen i det?
Avatar billede shaggy Nybegynder
27. marts 2003 - 17:41 #2
fordi så kan man ikke lave tags som f.eks. <b> og lign.
Avatar billede oasen Nybegynder
27. marts 2003 - 17:43 #3
Men okay - hvis de absolut ikke må det, kan du f.eks. gøre det således.

if InStr(Request.form("name"), "<") > 0 Or InStr(Request.form("name"), ">") > 0 then Response.Redirect("http://newz.dk")
Avatar billede oasen Nybegynder
27. marts 2003 - 17:43 #4
shaggy ---> Ja, men hvorfor må de ikke det?
Avatar billede shaggy Nybegynder
27. marts 2003 - 17:46 #5
Hvis nogle har en ide til hvorledes at tegn som "<" kan omformes til "&lt;" inden data bliver gemt i databasen så kan det også være en løsning
Avatar billede oasen Nybegynder
27. marts 2003 - 17:47 #6
Det skal ikke konverteres til noget som helst, før du indsætter det i databasen. Det eneste, du skal tænke på er, når det udskrives i browseren.
Og det klarer du således:

Streng = "<b>Denne tekst er ikke fed</b>"
Response.Write Server.HTMLencode(Streng)
Avatar billede shaggy Nybegynder
27. marts 2003 - 17:48 #7
fordi en anden side henter de pågældende data og sætter dem ind i html kode. Så hvis nu en bruger vil være sjov kan pågældende fx skrive <h1><a href="pornking.com">JEG ER FOR SEJ</a></h1> som sit navn hvorefter linket dukker op på den side som henter data fra databasen
Avatar billede oasen Nybegynder
27. marts 2003 - 17:50 #8
Ved brug af HTMLencode kan brugeren skrive alt det kode, han/hun vil, uden at det vil blive tolket.
Prøv selv.
Avatar billede shaggy Nybegynder
27. marts 2003 - 17:51 #9
<%
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../../db/larsbo.mdb")
    Set rs = Server.CreateObject("ADODB.RecordSet")
    strSQL = "SELECT * FROM tagwall order by id DESC"
    Set rs = Conn.Execute(strSQL)
%>
<%= rs("name") %><br>
<%= rs("message") %><br>
<%= rs("email") %><br>
<%= rs("time") %><br>

Jeg udskriver med denne kode, hvordan indsætter jeg din kode "Streng = "<b>Denne tekst er ikke fed</b>"
Response.Write Server.HTMLencode(Streng)" ??
Avatar billede oasen Nybegynder
27. marts 2003 - 17:52 #10
<%
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../../db/larsbo.mdb")
    Set rs = Server.CreateObject("ADODB.RecordSet")
    strSQL = "SELECT * FROM tagwall order by id DESC"
    Set rs = Conn.Execute(strSQL)
%>
<%= Server.HTMLencode(rs("name")) %><br>
<%= Server.HTMLencode(rs("message")) %><br>
<%= Server.HTMLencode(rs("email")) %><br>
<%= Server.HTMLencode(rs("time")) %><br>

Sværere er det såmænd ikke.
Avatar billede shaggy Nybegynder
27. marts 2003 - 17:52 #11
ahhh kanon, jeg siger tak
Avatar billede oasen Nybegynder
27. marts 2003 - 17:53 #12
Så lidt da :)
Avatar billede Slettet bruger
27. marts 2003 - 17:54 #13
<% @LANGUAGE = VBScript %>
<% Option Explicit
Response.Expires = 0

Function DBFix(tempString)
    tempString = Replace(Trim(tempString), "'", "''")
    tempString = Replace(tempString, "{", "")
    tempString = Replace(tempString, "}", "")
    tempString = Replace(tempString, "<", "")
    tempString = Replace(tempString, ">", "")
    DBFix = tempString
End Function

Dim name,email,mode,message

name = DBFix(Trim(Session(Request.form("name"))))
email = DBFix(Trim(Session(Request.form("email"))))
mode = Request.QueryString("mode")
message = Request.form("message")

If mode = "send" Then
    If name = "Your Name" Then
        Response.Redirect("http://newz.dk")
    End If

    If name = "Your Email" Then
    Response.Redirect("http://newz.dk")
    End If

    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../../db/larsbo.mdb")
    Set rs = Server.CreateObject("ADODB.RecordSet")
    strSQL = "Select * From tagwall"
        rs.Open strSQL, Conn, 1, 3
        rs.addnew
        rs("name") = name
        rs("message") = message
        rs("email") = email
        rs("time") = Now()
        rs.update
        rs.Close
    Set rs = Nothing
    Conn.Close
    set Conn = Nothing
    Response.Redirect("index.asp")
End If
%>

På denne måde undgår du at folks evn. asp eller javascript's bliver generet. Scriptet
er ikke checket, så det kan godt være at der er nogle "runtime error"'s. Håber det kan
hjælpe.

//Hjalte
Avatar billede oasen Nybegynder
27. marts 2003 - 17:58 #14
Hvorfor dog manipulere med folks data, når der findes glimrende funktioner til at undgå tolkning af eventuelle kodestumper?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester