Avatar billede mrg Nybegynder
10. april 2002 - 10:40 Der er 5 kommentarer og
1 løsning

Forum og scripts

Efter en nat hvor flere større fora i DK blev lagt ned af scripts virker det her som et godt sted at spørge: Er der en let måde at beskytte sit forum mod at folk indsætter scripts og hvad der ellers findes af "tricks" ???
Avatar billede nixon Juniormester
10. april 2002 - 10:44 #1
du kan selvfølgelig fjerne muligheden for at inssætte html :)
Avatar billede mrg Nybegynder
10. april 2002 - 10:51 #2
godt - vi har talt om at udelukke indlæg med "<" og ">"
Avatar billede mrg Nybegynder
10. april 2002 - 10:51 #3
Kan du give et kode eksempel på dette ?
Avatar billede simonia Nybegynder
10. april 2002 - 10:53 #4
lytter med....
Avatar billede keysersoze Ekspert
10. april 2002 - 11:33 #5
jeg ved faktisk ikke hvad de fora er lagt ned med - ikke engang at det er sket :)

men ii asp findes der er en mulighed, som gør det let at undgå at html-koder bliver udført i et forum - i stedet bliver al koden bare udskrevet i det pågældende forum (ligesom på fx eksperten)

du kan udskrive med server.htmlencode (eller også er der server.urlencode - kan ik' li' husk') som gør at alt bliver udskrevet, da fx < og > vil blive lavet om til kode og ikke indsat direkte
Avatar billede eagleeye Praktikant
10. april 2002 - 13:55 #6
Du kan altid bruge server.htmlencode for den lave HTML kode om til tekst men det ser ikke så pænt ud jeg har lavet dette til min gæstebog:


Function RemoveHTML( strText )
  Const TAGLIST = ";!--;!DOCTYPE;A;ACRONYM;ADDRESS;APPLET;AREA;B;BASE;BASEFONT;BGSOUND;BIG;BLOCKQUOTE;BODY;BR;BUTTON;CAPTION;CENTER;CITE;CODE;COL;COLGROUP;COMMENT;DD;DEL;DFN;DIR;DIV;DL;DT;EM;EMBED;FIELDSET;FONT;FORM;FRAME;FRAMESET;HEAD;H1;H2;H3;H4;H5;H6;HR;HTML;I;IFRAME;IMG;INPUT;INS;ISINDEX;KBD;LABEL;LAYER;LAGEND;LI;LINK;LISTING;MAP;MARQUEE;MENU;META;NOBR;NOFRAMES;NOSCRIPT;OBJECT;OL;OPTION;P;PARAM;PLAINTEXT;PRE;Q;S;SAMP;SCRIPT;SELECT;SMALL;SPAN;STRIKE;STRONG;STYLE;SUB;SUP;TABLE;TBODY;TD;TEXTAREA;TFOOT;TH;THEAD;TITLE;TR;TT;U;UL;VAR;WBR;XMP;"
  Const BLOCKTAGLIST = ";APPLET;EMBED;FRAMESET;HEAD;NOFRAMES;NOSCRIPT;OBJECT;SCRIPT;STYLE;"
   
  Dim nPos1
  Dim nPos2
  Dim nPos3
  Dim strResult
  Dim strTagName
  Dim bRemove
  Dim bSearchForBlock
   
  nPos1 = InStr(strText, "<")
  Do While nPos1 > 0
    nPos2 = InStr(nPos1 + 1, strText, ">")
    If nPos2 > 0 Then
      strTagName = Mid(strText, nPos1 + 1, nPos2 - nPos1 - 1)
      strTagName = Replace(Replace(strTagName, vbCr, " "), vbLf, " ")
      nPos3 = InStr(strTagName, " ")
      If nPos3 > 0 Then
        strTagName = Left(strTagName, nPos3 - 1)
      End If
      If Left(strTagName, 1) = "/" Then
        strTagName = Mid(strTagName, 2)
        bSearchForBlock = False
      Else
        bSearchForBlock = True
      End If   
      If InStr(1, TAGLIST, ";" & strTagName & ";", vbTextCompare) > 0 Then
        bRemove = True
        If bSearchForBlock Then
          If InStr(1, BLOCKTAGLIST, ";" & strTagName & ";", vbTextCompare) > 0 Then
            nPos2 = Len(strText)
            nPos3 = InStr(nPos1 + 1, strText, "</" & strTagName, vbTextCompare)
            If nPos3 > 0 Then
              nPos3 = InStr(nPos3 + 1, strText, ">")
            End If
            If nPos3 > 0 Then
              nPos2 = nPos3
            End If
          End If
        End If
      Else
        bRemove = False
      End If
      If bRemove Then
        strResult = strResult & Left(strText, nPos1 - 1)
        strText = Mid(strText, nPos2 + 1)
      Else
        strResult = strResult & Left(strText, nPos1)
        strText = Mid(strText, nPos1 + 1)
      End If
    Else
      strResult = strResult & strText
      strText = ""
    End If
    nPos1 = InStr(strText, "<")
  Loop
  strResult = strResult & strText
  RemoveHTML = strResult
End Function



------

Den fjerner som det er nu kun tags i et lag så man kan snyde functionen ved at skrive <<b>> det bliver efter man har kørt functionen til <b> altså en rigtig HTML tag. Det kan dog løses ved at kaldes function i et loop for at tjekke om der er nogle som forsøger at snyde...:

her er det loop du skal hvade i koden:

textToGuestbook = RemoveHTML(request.form("guestComment"))
textToGuestbook2 = textToGuestbook
runNo = 1
AttackLimit = 5
do
  textToGuestbook = textToGuestbook2
  textToGuestbook2 = RemoveHTML(textToGuestbook)
  runNo = runNo + 1
loop until (textToGuestbook = textToGuestbook2) OR (runNo = AttackLimit)

if (runNo < AttackLimit) then
  insert i datbase (textToGuestbook2)

------


De HTML tags du vil beholde skal fjernes fra:
const TAGLIST = ";!--;..................."


Måske det kan give lidt inspriration, du må gerne prøve min gæstebog www.eagleeye.dk
Der er også en anden sikkerhed indbygget i min gæstebog at man kun kan lave et indlæg pr. dag.
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