24. maj 2005 - 10:17Der er
39 kommentarer og 1 løsning
Wysiwyg sikkerhed ?
Hejsa,
Jeg benytter mig af brugen af et wysiwyg modul til erstatning for nogle af min textarea's, men for at jeg kan få lov at gemme data i databasen skal jeg tilføje ValidateRequest="false" til min aspx side og det skaber jo som sagt et sikkerhed problem da folk så kan tilføje diverse iriterende og skadelig kode.
Hvordan ville du forholde dig til dette ? Og er der nogle muligheder for kun at tillade <b>, <i>, <font> og andre html tags skrevet i wysiwyg feltet ?
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.
Ok det vil sige at der ikke er noget smart i platformen man kunne bruge for at løse det for så har jeg noget ældre asp kode som jeg kan omskrive til dette formål :o)
Imports System Imports System.Collections Imports System.Text.RegularExpressions
Class MainClass Private Shared valid As ArrayList = New ArrayList(New String() {"b", "i"}) Public Shared Sub Test(ByVal s As String) Dim res1 As MatchCollection = Regex.Matches(s, "(?:<)([^/>][^>]*)(?:>)") Dim i As Integer For i = 0 To res1.Count - 1 If Not valid.Contains(res1(i).Groups(1).Value) Then Console.WriteLine(s + " - contains invalid start tag") End If Next Dim res2 As MatchCollection = Regex.Matches(s, "(?:</)([^>]+)(?:>)") For i = 0 To res1.Count - 1 If Not valid.Contains(res2(i).Groups(1).Value) Then Console.WriteLine(s + " - contains invalid end tag") End If Next End Sub
Public Shared Sub Main(ByVal args As String()) Test("Dette her er <b>OK</b> text") Test("Dette her <a href='http://www.eksperten.dk/'>link</a> er ikke OK") End Sub End Class
Dim res1 As MatchCollection = Regex.Matches(s, "(?:<)([^/>][^>]*)(?:>)") Dim i As Integer For i = 0 To res1.Count - 1 If Not valid.Contains(res1(i).Groups(1).Value) Then Console.WriteLine(s + " - contains invalid start tag") End If Next
For hver af de elementer jeg tilføjer i dette array :
Private Shared valid As ArrayList = New ArrayList(New String() {"b", "i"})
Men blot med udskiftning af res1, res2, res3 osv. i dette :
Dim res1 As MatchCollection = Regex.Matches(s, "(?:<)([^/>][^>]*)(?:>)") For i = 0 To res1.Count - 1
Så fik jeg testst lidt og uanset om det er valid eller ej så smidder den fejlbesked. Min function ser ud som følger :
Private Shared valid As ArrayList = New ArrayList(New String() {"STRONG", "B"}) Public Shared Function CheckTextarea(ByVal Input As String) Dim strError As String Dim res1 As MatchCollection = Regex.Matches(Input, "(?:<)([^/>][^>]*)(?:>)") Dim i As Integer For i = 0 To res1.Count - 1 If Not valid.Contains(res1(i).Groups(1).Value) Then strError = "Det gik ikke godt :o( !" End If Next Dim res2 As MatchCollection = Regex.Matches(Input, "(?:</)([^>]+)(?:>)") For i = 0 To res1.Count - 1 If Not valid.Contains(res2(i).Groups(1).Value) Then strError = "Det gik ikke godt :o( !" End If Next Return strError End Function
og min button event ser ud som følger :
Private Sub btn_Newsadd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Newsadd.Click '--- Kalder tilføje funktion Dim strNewsAdd As String strNewsAdd = Util.CheckTextarea(txt_News.Text) If strNewsAdd <> "" Then lbl_NewsError.Text = "<b>" & GetLocalizedString("errorheader") & "</b><br>" & strNewsAdd & "<br>" End If End Sub
Ja og hvis jeg udskriver fra wysiwyg feltet hvor jeg f.eks har lavet en <b>tester</b> så udskriver den det, men jeg har lidt på fornemmelsen at det er noget i den editor der laver problemer da det som sagt virker fint på en almindelig textbox :o(
Public Shared Function CheckTextarea(ByVal Input As String) Dim strError As String strError = "" Dim res1 As MatchCollection = Regex.Matches(Input, "(?:<)([^/>][^>]*)(?:>)") Dim i As Integer For i = 0 To res1.Count - 1 If Not valid.Contains(res1(i).Groups(1).Value) Then strError = "False" End If Next Dim res2 As MatchCollection = Regex.Matches(Input, "(?:</)([^>]+)(?:>)") For i = 0 To res2.Count - 1 If Not valid.Contains(res2(i).Groups(1).Value) Then strError = "False" End If Next Return strError End Function
Ja det er fame underligt for når jeg køre test kan alle andre tags angivet i valid streng gå igennem, men bare ikke <br> el. <BR> og den kan jeg jo ikke undlade i min valid
Men tjekker jeg det på en almindelig textbox så virker det fint, bare ikke når jeg tester det på den s.... wysiwyg editor :o(
/Websam
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.