我正在开发一个项目,允许公众(所以每个人)通过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%安全方式
基础教程推荐
- this[] 指的是什么内容 讨论 2023-11-30
- Ajax实现动态加载数据 2023-02-01
- 浅谈Vue2和Vue3的数据响应 2023-10-08
- 关于文字内容过长,导致文本内容超出html 标签宽度的解决方法之自动换行 2023-10-28
- JS前端广告拦截实现原理解析 2024-04-22
- vue离线环境如何安装脚手架vue-cli 2025-01-19
- CSS3的几个标签速记(推荐) 2024-04-07
- 浅析canvas元素的html尺寸和css尺寸对元素视觉的影响 2024-04-26
- 基于Vue制作组织架构树组件 2024-04-08
- js禁止页面刷新与后退的方法 2024-01-08
