首页->正文

特殊字符及转义上应注意的问题

2011-10-13 -Web开发 标签: php javascript

总结下日常开发中对特殊字符及其转义方面,应注意的一些问题

一、 引号和单引号的处理
·表单提交时
php方面,可以在服务器段配置magic_quotes_gpc(PHP5.3起此功能已经废除,具体见这里),默认给引号增加转义,即'转义为\',"转义为\"。所以接收数据端要进行相关判断(get_magic_quotes_gpc函数),避免造成多重转义。例如写入数据库前,你进行了mysql_escape_string()处理,或者对数据进行json编码(如json_encode)等都会造成引号的多重转义,引发错误。

·引号的显示处理
HTML标记中的引号显示,如title="这里如果出现引号呢?",方法是把引号和单引号转义为实体形式,如htmlspecialchars()函数,同时注意下ENT_QUOTES参数,因为此函数默认不会转义单引号。

另外javascript中的数据同样要处理,例如生成的数据用于js变量时,var a='单引号出现在这呢?',这时候就要做转义了,可通过str_replace函数做全局的替换,或者用addslashes只处理变量的值。如果是用代码生成js的话,还要注意下换行符“\n”的处理,避免生成这样的js代码:
<script>
document.write("12
3");
</script>

二、 HTML标记的处理
·需要过滤标记的提交信息
这时可以直接通过strip_tags函数直接过滤HTML标记,当然还有“<”和“>”最好也要做统一替换,避免漏掉一些不规则的标记。

·不可过滤标记的提交信息
这时要求按照用户提交的信息原样保存,而显示的时候做一些转义,如通过htmlspecialchars()函数,把HTML特殊字符转行为实体,保证信息原样显示的同时,防止
<script>alert(1);</script>
<img src="./errorimg" onerror="jscode"/>
等类似不良信息。

最后再了解下不转义或引发的一些危险,用来更引起你的注意:
SQL注入,可导致数据读取或写入异常,甚至泄露用户密码等敏感信息,删掉数据库等;
跨站攻击(XSS),影响页面正常显示,伪造页面内容,盗取客户端cookie信息等。

危害的详细介绍和处理方法见以下链接。总结下来就是:做好一切提交数据的验证和过滤!
SQL注入 http://baike.baidu.com/view/983303.htm
跨站攻击 http://baike.baidu.com/view/1037363.htm

下一篇 获取页面返回的跳转地址

上一篇 windows下php的ftp函数问题

相关文章

Ubuntu下编译安装PHP

使用curl_multi_init并发请求

页面跳转的方式总结

php增加Last-Modified为何无效

用xhprof分析php代码

文章分类

开发小提示

  • 1:Mongodb中通过db.yourCollectionName. dataSize()查看某个文档的大小
  • 2:linux下用reset命令恢复查看二进制文件导致的命令行乱码
  • 3:查看MySQL表的索引情况show index from tableName
  • 更多...

交流

  • wangnow(a)126.com