您的位置:首页 > 数据库

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

2014-03-30 14:24 489 查看
前两天用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()将数据进行反转义即可正确显示。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐