百度编辑器向数据库提交数据后字符转义的问题
来源:互联网 发布:百度验证码算法 编辑:程序博客网 时间:2024/05/16 08:33
前两天用ThinkPHP做网站开发,后台调用百度编辑器提交数据。在做前端的时候调取数据库显示文章内容,在页面上却显示出如<p></p> <strong></strong>之类的字符。于是查看数据库,发现在数据库中存储的内容为<p></p>&nbsp;<strong></strong> ,百度一下,发现<>$amp;分别是< > &的转义字符。
为什么要将这些特殊字符转义呢?一般来讲,用户输入的东西是不可信任的,如用户注册,用户评论等。所以不光要做好防止sql的注入,还要防止JS的注入,html的注入。举几个简单例子。
一。javascript注入的危害。
我在一个网站留言了,并且这个网站没有JS进行过滤,我在留言中加入以下内容
<script type="text/javascript">
for(i=0;i>=0;i++)
alert("我弹");
</script>
如果不对JS标签进行转义,那么将在浏览器上无限循环弹出警告框。转义到数据后,在前台调用的时候进行反转义,就可以将原始内容完完全全显示出来而不会造成危害。
二。html注入的危害
对用户输入的<p></p>等标签不进行转义的话,再向页面输出时会破坏页面的布局。
关于表单提交的特殊字符的处理方法,常用的PHP 函数有:
1. htmlspecialchars() ,作用:将与,单双引号,大小于号转成html格式 如:&转成& "转成&qout; '转成' <转成< >转成>
2. htmlspecialchars_decode() 作用:对应将上述字符进行反转义
3. addslashes() 作用:将单双引号,反斜线和null加上反斜线转义 如:'转成\' \转成\\ "转成\"
4. stripslashes() 作用: 对应的去掉上述特殊字符添加的反斜线,一个反斜线的话直接去掉,若是连续两个反斜线,则去掉一个,留下一个。
所以针对本文开始时提出的问题,只需在前台调用数据库向页面显示的时候用htmlspecialchars_decode()将数据进行反转义即可正确显示。
- 百度编辑器向数据库提交数据后字符转义的问题
- java中PreparedStatement解决需转义字符向数据库中插入时的转义问题
- 百度编辑器提交数据时如何防止html标签被转义
- 百度编辑器ueditor通过ajax方式提交,不需要事先转义字符的方法(异常:从客户端(xxx)中检测到有潜在危险的 Request.Form 值)
- 百度编辑器ueditor通过ajax方式提交,不需要事先转义字符的方法(异常:从客户端(xxx)中检测到有潜在危险的 Request.Form 值)
- 通过JS向表单中增加元素后提交无法获取数据问题的解决。
- 向数据库提交大量数据,提交方式的选择
- jsp表单提交到数据库的数据(中文字符)读取后就变成了乱码
- 关于一个编辑器插入数据库需要转义的问题
- ExtJS加载不到JSON数据的问题(转义字符)
- 转义字符的相关问题
- ORACLE 字符转义的问题
- javascript转义字符的问题
- 数据库导入字符串路径转义字符问题
- 向服务器提交数据时的编码问题
- 关于supesite后台添加外部链接后字符转义的问题
- Java中的特殊字符的转义问题
- html使用转义字符带来的问题
- 强联通分量 缩点 tarjan算法
- 黑马程序员--基础加强(JDK1.5新特性)
- typedef
- 【iOS】ArcGIS for iOS环境配置
- HashMap相关推荐
- 百度编辑器向数据库提交数据后字符转义的问题
- 手形看你一生的命运
- Android Settings剖析与修改
- Linux 和 Windows 网络命令汇总
- Jsp 连接 mySQL、Oracle 数据库备忘(Windows平台)
- 黑马程序员——Java学习笔记之②——“面向对象”
- QQ2013自动登陆实现原理
- UVa 755 - 487--3279
- 黑马程序员--基础加强(反射)