24. juni 2004 - 14:51Der er
15 kommentarer og 1 løsning
Slet script-tags (VB)
Hej
Jeg er ved at lave et vb-script, som skal slette alle script-tags fra en streng med kode.
Kan du hjælpe mig med resten?
Function StripScript(ByRef asHTML) Set regEx = New RegExp regEx.IgnoreCase = True regEx.Global = True regEx.Pattern = "(<script??????script>)" StripScript = regEx.Replace(asHTML, "") Set regEx = Nothing End Function
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Hymm, dit sidste eksempel virker heller ikke. F.eks. bliver outputtet ved følgende kode (fra strengen):
<SCRIPT LANGUAGE="JavaScript"> <!-- Begin function clock() { if (!document.layers && !document.all) return; var digital = new Date(); var def = (digital.getTimezoneOffset()/60)+2; var hours = (digital.getHours() + def); var minutes = digital.getMinutes(); var day = digital.getUTCDate(); var amOrPm = "AM";
if (hours > 23) day = day+1; digital.setUTCDate(day); var day = digital.getUTCDate(); var month = digital.getUTCMonth(); . . . . . // End --> </script>
Output: > 23) day = day+1; digital.setUTCDate(day); var day = digital.getUTCDate(); var month = digital.getUTCMonth(); switch(month) { case 0: amonth="Jan " break; case 1: amonth="Feb " break; case 2: amonth="Mar " break; case 3: amonth="Apr " break; case 4: amonth="May " break; case 5: amon.........
Der er ikke tale om egne script, da jeg er ved at lave et system, hvor folk kan oprette deres link til deres hjemmeside, på min hjemmeside. Og dertil skal deres grabbes noget tekst, som er meget smart for dem, som ikke kan copy/paste.
Din sidste kode virker heller ikke, MEN kan man ikke bare lave et andet reg.exp.-script, som starter med at køre strengen igennem og fjerner de tegn mv, som skaber problemer, hvorefter det endelige script køres igennem og løser opgaven.
Altså et lille script som fjerner alle < og > som IKKE står i script-tagget (altså script-taggets start og slutning).
Der er jo ikke tale om at vi skal være sød over for script-taggene, da intet af det skal bruges til noget, så at man vandaliserer indeholdet i script-tagget er jo underordnet - det skal bare væk, altså sammen, så kun den rene tekst står tilbage.
Man kan måske gøre det på den måde, at man først tester for en forekomst af nogle tegn, som er usandsynlige, og når man så finder et tegn, som ikke forekommer på hjemmesiden erstatter man </script> med det og bruger dette tegn i negeringen ...
Lidt omstændeligt, men nok en farbar vej !-)
Og tegn, jeg kan komme på, som ikke er alt for sandsynlige:
¨ ~ ¤ § ^ ` ´
-- hvis du prøver dem i nogenlunde den rækkefølge, kan du nok finde een af dem, som slet ikke forekommer, så det tegn kan bruges til at erstatte tagget, og derefter bruges sådan:
regEx.Pattern = "(<script[^\¨]*\¨"
-- da nogle af de ovenstående tegn skal escapes, hvis de skal bruges, er det nok sikrest at escape under alle omstændigheder ...
Kan man ikke bare gøre det på den måde, at man starter med at slette alle < og > tegn.
replace(streng, "<", "") replace(streng, ">", "")
Og så:
regEx.Pattern = "(script??????\/script)"
Så opstår der bare en problem, hvis der bliver oprettet en hjemmeside, som faktisk omtaler ordet "script", men da det er meget urealistisk for mine brugere (er langt fra edb-folk), så tror jeg nok, at den holder vand. (Jeg har i forvejen fjernet alle andre tags, og jeg tager kun fra bodyen jeg tager koden, så det er kun script-taget tilbage, som driller).
Men jeg kender ikke noget til reg.exp. så kan du ikke hjælpe mig med at lave et reg.exp.-script, som sletter alle < og > tegn samt lave et reg.exp.-script, som sletter alt mellem "script" og "/script"?
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.