我正在开发一个项目,允许公众(所以每个人)通过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%安全方式
基础教程推荐
- 在vue中怎么分享到空间,微博,朋友圈 2023-10-08
- vue项目修改页面title 2023-10-08
- Ajax实现城市二级联动(一) 2023-01-31
- jsp+ajax实现无刷新上传文件的方法 2022-12-15
- Ajax+js实现异步交互 2022-12-15
- Ajax 跨域如何实现 2022-12-28
- php-如何在HTML / Javascript的Windows帮助中执行树状结构 2023-10-25
- Vue element ui用户展示页面的实例 2023-07-09
- IE8下Ajax缓存问题及解决办法 2023-01-20
- Vue.js从入门到精通第四天 2023-10-08