17. september 2005 - 09:42Der er
38 kommentarer og 1 løsning
Fjerne uønskede Html tags
Hejsa,
Da jeg efterhånden er ved at få grå hår af en function der validere på intastede html tags vil jeg høre om der er en der kan hjælpe mig med at få lavet en function der fjerner alle html tags undtaget nogle angivet i en liste ?
Det jeg har pt. validere på hvilke html tags der er skrevet og det virker fint på en almindelig textbox, men når jeg køre det på en wysiwyg editor vil den ikke acceptere alle tags og udskriver derfor fejl.
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Fra MSDN ValidateRequest Indicates whether request validation should occur. If true, request validation checks all input data against a hard-coded list of potentially dangerous values. If a match occurs, an HttpRequestValidationException Class is thrown. The default is true. This feature is enabled in the machine configuration file (Machine.config). You can disable it in your application configuration file (Web.config) or on the page by setting this attribute to false.
Den fjerner den validering der er på farlige requests, og de kan altså gå igennem, tilføjes som false i page directive..
Ja det er jeg med på og den er sat til false og hvad så når en eller anden person begynder og lege med javascript i min editor så kan denne person lave mange grumme ting ved min side ?
Jeg tror denne burde gøre en del ved det hele eller hvad ar jeres mening om denne :
Private Function FormatDisableScripting(ByVal strInput As String) As String Dim TempInput As String = strInput
Dim options As RegexOptions = RegexOptions.IgnoreCase Or RegexOptions.Singleline Dim strReplacement As String = " " Dim strPattern As String = "<script[^>]*>.*?</script[^><]*>"
Hmm, bortset fra at den ikke returnerede noget, og at der er et par overflødige linjer, og at der manglede noget - så var den da inde på noget af det rigtige:
Private Function FormatDisableScripting(ByVal strInput As String) As String Dim TempInput As String = strInput
Dim options As RegexOptions = RegexOptions.IgnoreCase Or RegexOptions.Singleline Dim strReplacement As String = " "
Cool, og hvis nu jeg bare vil have en function der bare fjerner alle html tags vil dette så være nok :
Private Function RemoveHtml(ByVal Input As String) As String Dim strInput As String Dim strOutput As String strInput = Input strOutput = Regex.Replace(strInput, "<[^>]*>", " ") Return strOutput End Function
For så tror jeg, jeg kan klare mig et godt stykke af vejen
Og med hensyn til din validering ovenfor kunne dette så ikke være en god ide at tage med :
Private Function RemoveHtml(ByVal Input As String) As String Dim strInput As String Dim strOutput As String strInput = Input strOutput = Regex.Replace(strInput, "<[^>]*>", " ") strOutput = Regex.Replace(strInput, "<script[^>]*>.*?</script[^><]*>", " ") Return strOutput End Function
Private Function RemoveHtml(ByVal Input As String) As String Input = Regex.Replace(Input, "<script[^>]*>.*?</script[^><]*>", " ") Input = Regex.Replace(Input, "<[^>]*>", " ") Return Input End Function
- specielt er det en god ide at fjerne scriptet *før* at du begynder på html-tagsene.
Det er rigtigt set, men det er faktisk ikke nok at fjerne "java script:" og "vbscript:", idet scriptene alligevel vil blive kørt (faktsisk er de selet ikke en del af standarden - selv om mange tror det).
I stedet burde du gå efter *hele* OnLoad-, OnClick-, OnMouseuver-, OnMouseout-, OnChange-, etc. etc., -attributten og fjerne denne.
Men, venlt lige..., nej det er jo faktisk ikke nødvendigt at overhovedet gøre noget ved dem. De bliver jo faktisk slettet når at du sletter html-tagsene:
Private Function RemoveHtml(ByVal Input As String) As String Dim options As RegexOptions = RegexOptions.IgnoreCase Or RegexOptions.Singleline
TempInput = Regex.Replace(TempInput, "OnChange\s*=[""']?.*?[""']?", strReplacement, options) TempInput = Regex.Replace(TempInput, "OnClick\s*=[""']?.*?[""']?", strReplacement, options) ' osv for alle de andre events.
TempInput = Regex.Replace(TempInput, "OnChange", strReplacement, options) TempInput = Regex.Replace(TempInput, "OnClick", strReplacement, options) ' osv for alle de andre events.
Nej det er for at have både den ene og den anden da jeg på en side med min editor også har almindelige textbox'e der ikke må indeholde noget html over hovedet ;o)
Hvad går der galt når uanset hvad jeg skriver i min editor bliver slettet når jeg prøver at udskrive det på siden, dette er først kommet efter jeg prøver min function af på editorens output ?
Hmm, jeg ved ikke rigtigt om sådan noget kode som:
<img onload=java script:load />
- virker. Altså hvor der ikke er hverken "-tegn eller '-tegn rundt om javascript-kroppen. Men hvis vi nu antager at det *altid* er enten et '- eller et "-tegn tilstede, så kan koden laves sådan her:
ok, men den editor jeg benytter (http://www.freetextbox.com) fjerner dem tilsyneladende i koden inden der gemmes/vises. Om det er noget de bevidst har gjort ved jeg ikke.
Så syens jeg at du skal kaste dig over en anden editor - den der laver non-standard kode ud af pæn standard-kode. Det kan kun ende med at give dig en masse problemer. :^(
HTML eller XHTML - den burde nu under ingen omstændigheder have fjernet "-tegnene. :^|
Ah, well ... tak for point :^)
Synes godt om
Ny brugerNybegynder
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.