我正在开发一个项目,允许公众(所以每个人)通过TinyMCE为他们自己的项目页面插入HTML.由于每个人都被允许使用此功能,我需要一种100%安全的方式将TinyMCE输出插入我的数据库,并将其显示在另一个页面上,就像用户插入一...
我正在开发一个项目,允许公众(所以每个人)通过TinyMCE为他们自己的项目页面插入HTML.由于每个人都被允许使用此功能,我需要一种100%安全的方式将TinyMCE输出插入我的数据库,并将其显示在另一个页面上,就像用户插入一样.
XSS,SQL注入和所有其他废话不是我想要的新网站!我可以做htmlentities – > htmlspecialchars以及稍后使用htmlentities_decode,但这是100%安全,这是最好的方法吗?
解决方法:
在大多数情况下,使用预准备语句可以轻松避免SQL注入.
如果您计划允许用户发布HTML标记,则XSS会更加困难.您需要删除所有< script>标签,所有来自标签的*属性,所有javascript:url,甚至那时候可能还没有完全保证使输入HTML安全.像HTMLPurifier这样的库可以提供帮助,但只要你允许HTML,你就有可能让恶意通过.
您可以使用实现诸如markdown或wikitext之类的库.这严重限制了用户可以输入的内容,同时仍然允许他们在一定程度上标记内容.它不是全面的(人们仍然可以发布到恶意网站的链接,并希望用户点击它们,有些人会真实地做到这一点),你将无法使用像TinyMCE这样的丰富编辑器而没有某种形式插件,但清理markdown比清理HTML要简单得多.
本文标题为:php – 在MySQL中存储html的100%安全方式
基础教程推荐
- Typescript+Vue大型后台管理系统实战 2023-10-08
- vue之搭建 前端项目 2023-10-08
- Vue框架基础——迈出第一步 2023-10-08
- 详解CSS伪元素的妙用单标签之美 2022-11-23
- Unicode中的CJK(中日韩统一表意文字)字符小结 2022-09-21
- Spring MVC前端与后端5种ajax交互方法【总结】 2023-01-31
- JavaScript Image对象实现原理实例解析 2023-08-08
- javascript Blob对象实现文件下载 2023-08-12
- VSCode配置启动Vue项目 2023-10-08
- Django中的Ajax 2022-12-18
