百度编辑器向数据库提交数据后字符转义的问题

来源:互联网 发布:百度验证码算法 编辑:程序博客网 时间:2024/05/16 08:33

前两天用ThinkPHP做网站开发,后台调用百度编辑器提交数据。在做前端的时候调取数据库显示文章内容,在页面上却显示出如<p></p>&nbsp;<strong></strong>之类的字符。于是查看数据库,发现在数据库中存储的内容为&lt;p&gt;&lt;/p&gt;&amp;nbsp;&lt;strong&gt;&lt;/strong&gt; ,百度一下,发现&lt;&gt;$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格式   如:&转成&amp;  "转成&qout;   '转成&#039; <转成&lt;  >转成&gt;

2.  htmlspecialchars_decode()       作用:对应将上述字符进行反转义

3. addslashes()             作用:将单双引号,反斜线和null加上反斜线转义          如:'转成\'    \转成\\    "转成\"

4. stripslashes()            作用: 对应的去掉上述特殊字符添加的反斜线,一个反斜线的话直接去掉,若是连续两个反斜线,则去掉一个,留下一个。

所以针对本文开始时提出的问题,只需在前台调用数据库向页面显示的时候用htmlspecialchars_decode()将数据进行反转义即可正确显示。


0 0
原创粉丝点击