我试图从字符串中删除所有html标记并仅保留特定的(保留标记和属性), 我有这个:
set objRegExp = new RegExp
with objRegExp
.Pattern = "<^((b)|(i)|(em)|(strong)|(br)|(img))>.*</.*>"
.Global = True
end with
并使用:
objRegExp.replace(request.form("content"), "")
不会改变任何事情。
我需要这个我建立的论坛,它支持WYSIWYG编辑器,我想阻止xss&amp; sql注射。
答案 0 :(得分:2)
删除所有HTML标记:
Public Function RegexAllHtml(strValue)
Set RegularExpressionObject = New RegExp
With RegularExpressionObject
.Pattern = "<(.|\n)+?>"
.IgnoreCase = True
.Global = True
End With
Dim strResult: strResult = RegularExpressionObject.Replace(strValue, " ")
Set RegularExpressionObject = Nothing
RegexAllHtml = strResult
End Function
要删除特定标签(例如SPAN),您可以使用以下内容:
<SPAN[^><]*>|<.SPAN[^><]*>
或保留特定标签(例如b为粗体):<(?!/?(?:strong|b)\b)[^>]*>
BTW:大多数WYSIWG编辑器允许您配置哪些标签不安全,然后在保存内容之前将其删除!例如,参见CKEditor:http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-allowedContent