我目前在一个cms项目,我们希望使用tinymce作为我们的所见即所得编辑器。在这里,我们允许用户自定义他们的内容(例如一些部分是粗体的,不同的缩进等等),我想知道的是,我们如何将这些表单数据存储在mysql数据库中,以及如何从这些样式返回数据?数据库中是否有问题,因为它包含html标记?我想你会明白我的要求的。这是我们第一次使用所见即所得编辑器,感谢您的帮助。。
ztyzrc3y1#
对于mysql,tinymce生成的html只是一个字符串,您可以按原样存储它(在您的安全过滤器验证它之后)但是,应用程序必须非常小心地处理强脚本,因为粗心的处理会导致跨站点脚本(xss)。这比在非html字段上防止xss更困难,因为输出清理不起作用。防止html字段上出现xss的最有效方法是,您需要过滤服务器、白名单或黑名单中的html文本。黑名单更容易实现,但可能会错过一些我们不知道的模式。白名单更强大,但麻烦。您将定义允许的标记和属性,html包含无效的标记或属性可以被过滤或阻止。您可以通过jsoup实现白名单(为了更好的性能,我建议您自定义jsoup)你不能相信tinymce会帮你,因为黑客很容易绕过客户端验证。
1条答案
按热度按时间ztyzrc3y1#
对于mysql,tinymce生成的html只是一个字符串,您可以按原样存储它(在您的安全过滤器验证它之后)
但是,应用程序必须非常小心地处理强脚本,因为粗心的处理会导致跨站点脚本(xss)。
这比在非html字段上防止xss更困难,因为输出清理不起作用。
防止html字段上出现xss的最有效方法是,您需要过滤服务器、白名单或黑名单中的html文本。
黑名单更容易实现,但可能会错过一些我们不知道的模式。白名单更强大,但麻烦。您将定义允许的标记和属性,html包含无效的标记或属性可以被过滤或阻止。您可以通过jsoup实现白名单(为了更好的性能,我建议您自定义jsoup)
你不能相信tinymce会帮你,因为黑客很容易绕过客户端验证。