|
@@ -35,6 +35,8 @@ func Satitize(data *imagedata.ImageData) (*imagedata.ImageData, error) {
|
|
|
|
|
|
ignoreTag := 0
|
|
ignoreTag := 0
|
|
|
|
|
|
|
|
+ var curTagName string
|
|
|
|
+
|
|
for {
|
|
for {
|
|
tt, tdata := l.Next()
|
|
tt, tdata := l.Next()
|
|
|
|
|
|
@@ -67,15 +69,28 @@ func Satitize(data *imagedata.ImageData) (*imagedata.ImageData, error) {
|
|
|
|
|
|
return &newData, nil
|
|
return &newData, nil
|
|
case xml.StartTagToken:
|
|
case xml.StartTagToken:
|
|
- if strings.ToLower(string(l.Text())) == "script" {
|
|
|
|
|
|
+ curTagName = strings.ToLower(string(l.Text()))
|
|
|
|
+
|
|
|
|
+ if curTagName == "script" {
|
|
ignoreTag++
|
|
ignoreTag++
|
|
continue
|
|
continue
|
|
}
|
|
}
|
|
|
|
+
|
|
buf.Write(tdata)
|
|
buf.Write(tdata)
|
|
case xml.AttributeToken:
|
|
case xml.AttributeToken:
|
|
- if _, unsafe := unsafeAttrs[strings.ToLower(string(l.Text()))]; unsafe {
|
|
|
|
|
|
+ attrName := strings.ToLower(string(l.Text()))
|
|
|
|
+
|
|
|
|
+ if _, unsafe := unsafeAttrs[attrName]; unsafe {
|
|
continue
|
|
continue
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ if curTagName == "use" && (attrName == "href" || attrName == "xlink:href") {
|
|
|
|
+ val := strings.TrimSpace(strings.Trim(string(l.AttrVal()), `"'`))
|
|
|
|
+ if len(val) > 0 && val[0] != '#' {
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
buf.Write(tdata)
|
|
buf.Write(tdata)
|
|
default:
|
|
default:
|
|
buf.Write(tdata)
|
|
buf.Write(tdata)
|