Avatar billede per1291 Nybegynder
15. august 2005 - 23:14 Der er 25 kommentarer og
2 løsninger

Hvordan frasortere HTML-tags i et textarray?

Hej -
Jeg deltager i en debat på et andet forum.
Man indtaster sit indlæg i et textarray, som derpå behandles af et ASP-program, hvorefter indlægget bringes som det øverste på forum.
Jeg har opdaget en alvorlig fejl, et hul i sikkerheden som jeg gerne vil have lukket.
Det viser sig, at ASP-programmet ikke rører ved den indtastede tekst overhovedet.
Det er jo meget godt, hvis brugeren fx blot ønsker at fremhæve et ord med fed skrift eller sådan - og hvis brugeren desuden husker at bruge både start- og slut-tags.
Men ASP-programmet accepterer simpelt hen ALT!
Dvs, hvis jeg i et indlæg indtaster <div style="{ ... }"} og derefter UNDLADER at afslutte mit div-tag, så vil der opstå problemer for de foregående indlæg (i hvert fald i nogle browsere)!
Jeg vil gerne give webmaster et godt råd - nemlig dét at smide samtlige HTML-tags udenbords, førend teksten bringes.
Jeg tror, at nogle af jer ved hvordan man gør.
Hilsen Per
Avatar billede roenving Novice
15. august 2005 - 23:22 #1
Jeg ville matche med en regexp, som søgte på start og slut af et tag, i javascript vil det blive ca. sådan:

<script type="text/javascript">
var html ="<b>Her er en tekst</b>, som <u>indeholder</u> html-tags<img src='../billede.jpg'>";
var reg = /<[^>]*?>/g;
html = html.replace(reg,"");
alert(html);
</script>
Avatar billede nielle Nybegynder
15. august 2005 - 23:24 #2
roenving's pattern kan gøres lidt simplere:

<script type="text/javascript">
var html ="<b>Her er en tekst</b>, som <u>indeholder</u> html-tags<img src='../billede.jpg'>";
var reg = /<.*?>/g;
html = html.replace(reg,"");
alert(html);
</script>
Avatar billede nielle Nybegynder
15. august 2005 - 23:28 #3
Men at basere sikkerheden på at lappe hullet i JavaScript er imidlertid en dårlig løsning - JavaScript kan hurtigt disables. Rigtig sikkerhed fås kun på server-siden. Clientside scripting er mere beregnet på at stille noget brugerbelighed til rådighed.
Avatar billede roenving Novice
15. august 2005 - 23:29 #4
Måske er asp-siden kodet i Jscript server-side !-)
Avatar billede per1291 Nybegynder
15. august 2005 - 23:29 #5
<script type="text/javascript">
var reg = /<[^>]*?>/g;
var html = html.replace(reg,"");
</script>

Jeg har udeladt alert. Men mangler der ikke noget? En angivelse af, at det er regexp vi bruger ...
Avatar billede roenving Novice
15. august 2005 - 23:32 #6
Det står der allerede ...

// betyder start og slut på en regexp ligesom "" betyder start og slut på en tekststreng !-)

-- og du kan i hvert fald ikke

var html = html...
Avatar billede per1291 Nybegynder
15. august 2005 - 23:32 #7
nielle -> Jeg forudsætter at webmaster vil indlægge sit check serverside, altså som Javascript i ASP-delen. - Hilsen Per
Avatar billede per1291 Nybegynder
15. august 2005 - 23:38 #8
<script type="text/javascript">
var html = textarrayinput;
var reg = /<[^>]*?>/g;
var html = html.replace(reg,"");
</script>

Hvad betyder "g"? - Hilsen Per
Avatar billede per1291 Nybegynder
15. august 2005 - 23:40 #9
Øv - sidste "var html" bedes erstattet med "html" - Hilsen Per
Avatar billede olebole Juniormester
15. august 2005 - 23:43 #10
<ole>

Hehe ... skulle lige til at skrive det, da jeg så '1 nye indlæg' i nederste venstre hjørne  ;o)

'g' betyder 'søg/erstat' globalt i strengen ... ellers stopper den, når den har udskiftet første tag  ;o)

/mvh
</bole>
Avatar billede roenving Novice
15. august 2005 - 23:45 #11
-- og det kan være, at der også skal tilføjes et m (multiLine !-)

var reg = /<.*?>/gm;

-- og du kan jo ligesågodt bruge nielles forkortelse !o]
Avatar billede per1291 Nybegynder
15. august 2005 - 23:53 #12
Jeg er imponeret, men slet ikke forbløffet.
Tre gode hoveder - læg venligst svar alle sammen.
Men tjek lige først at jeg gør det rigtigt:

<script language="Javascript" type="text/javascript">
var html = textarrayinput;
var reg = /<.*?>/gm;
html = html.replace(reg,"");
</script>

Hilsen Per
Avatar billede olebole Juniormester
15. august 2005 - 23:59 #13
Venligt tak - men hold mig uden for point-givningen her. Det var under bagatelgrænsen  :)
Avatar billede per1291 Nybegynder
16. august 2005 - 00:04 #14
Okay Ole, men din melding var nu meget informativ. - Hilsen Per
Avatar billede roenving Novice
16. august 2005 - 00:08 #15
-- og 200 er langt over det passende point-tal ...

-- kan være at regexps er en anelse langhåret for de fleste, så man kan _måske_ forsvare at kalde det er svært spørgsmål (altså  60 point !-), men det tog mig altså længere tid at skrive eksempelstrengen end resten af koden, så egentlig bør det være i nærheden af 30 point !o]

-- els velbekomme '-)
Avatar billede per1291 Nybegynder
16. august 2005 - 00:13 #16
regexp er sort snak for mig - men jeg skal nok komme efter det. document.getElementById er fancy stuff, og alt det med createElement er noget jeg osse har til gode.
- Nå, nu venter vi kun på nielle. - Hilsen Per
Avatar billede olebole Juniormester
16. august 2005 - 02:22 #17
Første gang, jeg så en RegExp, var her på E, hvor Erik Jacobsen viste en. Min reaktion var et latter-hyl og noget "jaja ... et REGULÆRT udtryk ... pis med dig *ROTFL*" - så den stakkels Erik sikkert har tænkt, at "... nu sætter brugerbesynderligheden olebole zq da for alvor sejl på en bananbåd! Bare han nu ikke ryger igennem Distrikts Psykiatriens hullede net" :D

Jeg uvidende sjæl kendte kun til noget HTML, JS og PHP - men havde aldrig stiftet bekendtskab med et regulært udtryk (i kodesammenhæng) ...... det ændrede Erik så ved med noget, jeg misforstod som en joke  :)
Avatar billede olebole Juniormester
16. august 2005 - 02:26 #18
PS: Det er nok meget godt, man ikke skal se alle sine gamle spm. igennem  =8-O
Avatar billede nielle Nybegynder
16. august 2005 - 07:54 #19
Ingen point til mig på denne her. Ellers tak for tilbudet. :^)
Avatar billede per1291 Nybegynder
16. august 2005 - 11:08 #20
Så deler vi. - Hilsen Per
Avatar billede roenving Novice
16. august 2005 - 13:31 #21
Tak for point ;~}
Avatar billede erikjacobsen Ekspert
16. august 2005 - 13:38 #22
Ja, Ole, du har da fundet ud af at forskellen mellem almindelige programmering og så regulære udtryk, svarer til forskellen på at fælde et 8 meter højt træ med en flintøkse i forhold til at bruge en motorsav. En stenalder-person ville nok have haft samme reaktion overfor motorsaven, som du havde overfor de kære regulære udtryk.    ;)
Avatar billede olebole Juniormester
16. august 2005 - 15:42 #23
Jamen, jeg _var_ jo stenalder-manden på det tidspunkt, Erik ... omend en ihærdig stenalder-mand. Det er da forholdsvis hurtigt, jeg er nået til Jernalderen  ;D
Avatar billede roenving Novice
16. august 2005 - 15:44 #24
Hrm, og det lader til, at du også er nået til papir- (og stanniol-) alderen *rotf*
Avatar billede olebole Juniormester
16. august 2005 - 15:49 #25
hehe ... ja, den ramte jeg engang i efteråret '68  *-\

- men nu ville jeg jo nok passe lidt på, hvis jeg var dig ...... du _kunne_ jo få et drev i nakken, d.27  ;D
Avatar billede olebole Juniormester
16. august 2005 - 15:51 #26
- glæder mig zq til endelig at stikke på næven  :)
Avatar billede roenving Novice
16. august 2005 - 15:52 #27
I helt lige måde !-)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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