diff --git a/render.go b/render.go index 79644b3..a35c80e 100644 --- a/render.go +++ b/render.go @@ -24,7 +24,7 @@ var ( rexpNewLine = regexp.MustCompile("[\n\r]") rexpNonAlphaNum = regexp.MustCompile("[`~!@#$%^&*_|+=?;:'\",.<>{}\\/]") - rexpNoScriptIframe = regexp.MustCompile("<.*?(iframe|script).*?>") + rexpNoScriptIframe = regexp.MustCompile("(<.*?script.*?>.*?<.*?/.*?script.*?>|<.*?iframe.*?>|)") rexpLink = regexp.MustCompile("(ht|f)tps?://[^\\s]+") errorUnathorised = errors.New("password is wrong") diff --git a/test/main.go b/test/main.go index 7feb112..4611f94 100644 --- a/test/main.go +++ b/test/main.go @@ -340,5 +340,38 @@ func main() { ExpectStatus(200). ExpectJson("Success", true) + frisby.Create("Test publishing malicious note"). + Post(service+"/"). + SetData("tos", "on"). + SetData("password", "qwerty"). + SetData("text", "Foo Bar "). + Send(). + ExpectStatus(201). + ExpectJson("Success", true). + AfterJson(func(F *frisby.Frisby, json *simplejson.Json, err error) { + noteID, err := json.Get("Payload").String() + if err != nil { + F.AddError(err.Error()) + return + } + id = noteID + }) + + frisby.Create("Test export of fraudulent note"). + Get(service + "/" + id). + Send(). + ExpectStatus(200). + ExpectContent("Foo Bar") + + frisby.Create("Test deletion of malicious note"). + Post(service+"/"). + SetData("id", id). + SetData("tos", "on"). + SetData("text", ""). + SetData("password", "qwerty"). + Send(). + ExpectStatus(200). + ExpectJson("Success", true) + frisby.Global.PrintReport() }