PHP安全编程:对输出要进行转义
为了区分数据是否已转义,我还是建议定义一个命名机制。对于输出到客户机的转义数据,我使用$html数组进行存储,该数据首先初始化成一个空数组,对所有已过滤和已转义数据进行保存。
| 1 | <?php | 
| 2 |   | 
| 3 |   $html= array(  ); | 
| 4 |   $html['username'] = htmlentities($clean['username'], ENT_QUOTES, 'UTF-8'); | 
| 5 |   echo"<p>Welcome back, {$html['username']}.</p>"; | 
| 6 | 
| 7 | ?> | 
htmlspecialchars( )函数与htmlentities( )函数基本相同,它们的参数定义完全相同,只不过是htmlentities( )的转义更为彻底。
通过$html['username']把username输出到客户端,你就可以确保其中的特殊字符不会被浏览器所错误解释。如果 username只包含字母和数字的话,实际上转义是没有必要的,但是这体现了深度防范的原则。转义任何的输出是一个非常好的习惯,它可以戏剧性地提高你 的软件的安全性。
另外一个常见的输出目标是数据库。如果可能的话,你需要对SQL语句中的数据使用PHP内建函数进行转义。对于MySQL用户,最好的转义函数是 mysql_real_escape_string( )。如果你使用的数据库没有PHP内建转义函数可用的话,addslashes( )是最后的选择。
下面的例子说明了对于MySQL数据库的正确的转义技巧:
| 01 | <?php | 
| 02 |   | 
| 03 |   $mysql= array(); | 
| 04 |   $mysql['username'] = mysql_real_escape_string($clean['username']); | 
| 05 |   $sql= "SELECT * | 
| 06 |           FROM   profile | 
| 07 |           WHERE  username = '{$mysql['username']}'"; | 
| 08 |   $result= mysql_query($sql); | 
| 09 |   | 
| 10 | ?> | 
PHP安全编程:对输出要进行转义的更多相关文章
- EF5+MVC4系列(9) Razor视图引擎的核心原理;@符号的使用;输出html的转义
		一:Razor视图引擎的核心原理 Razor是ASP.NET MVC 3中新加入的技术,以作为ASPX引擎的一个新的替代项 ,他是一个视图引擎 他的核心原理,就是当读取到 @符号的时候,就认为这是开始 ... 
- UNIX网络编程——TCP输出,UDP输出
		TCP输出 每一个TCP套接字有一个发送缓冲区,我们可以使用SO_SNDBUF套接字选项来更改该缓冲区的大小.当某个应用进程调用write时,内核从该应用进程的缓冲区中复制所有数据到(或是应用程序的缓 ... 
- shell编程-输入/输出重定向(十一)
		linux中文件描述符 linux跟踪打开文件,而分配的一个数字,通过这个数字可以实现对文件的读写操作 用户可以自定义文件描述符范围是:3-max,max跟用户的ulimit –n 定义数字有关系,不 ... 
- shell编程——日志输出的同时显屏
		在执行脚本的时候我们常常需要将执行过程全部输出到日志里,以备出现报错时可以跟踪分析,开始我用的是exec: exec 1>info.log #把全部执行过程输出到info日志中 exec 2&g ... 
- 第一个shell编程,输出hello world!
		在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器).它类似于DOS下的command和后来的cmd.exe.它接收用户命令,然后调用相应的应用程序.--- ... 
- laravel5.4中{{$name}} 和 {{!! $name !!}} 的区别:后者原生输出。前者转义
- linux下 C编程改变输出字体颜色
		格式: echo "\033[字背景颜色;字体颜色m字符串\033[0m"例如:echo "\033[41;36m something here \033[0m" ... 
- twig输出转义
		twig输出转义--需求:传一个变量到 twig 中,需要插入几个空格,类似于下面这样:sprintf("%s%s -- %s", str_repeat(' ', $path_le ... 
- linux中shell编程
		shell编程 1 echo -e 识别\转义符 \a \b \t \n \x十六进制 \0八进制 等等 #!/bin/bash echo -e "hello world" 执行脚 ... 
随机推荐
- ML—随机森林·1
			Introduction to Random forest(Simplified) With increase in computational power, we can now choose al ... 
- Mac Pro 安装 Sublime Text 2.0.2,个性化设置,主题 和 插件 收藏
			1.到官网下载安装包 http://www.sublimetext.com/2 2.附注册码一枚 ----- BEGIN LICENSE ----- Andrew Weber Single User ... 
- window.location.href  和  window.location.replace 的区别
			window.location.href 和 window.location.replace 的区别 1.window.location.href=“url”:改变url地址: 2.window. ... 
- php导出csv数据在浏览器中输出提供下载或保存到文件的示例
			来源:http://www.jb51.net/article/49313.htm 1.在浏览器输出提供下载 /** * 导出数据到CSV文件 * @param array $data 数据 * @pa ... 
- iOS开发——多线程篇——RunLoop
			一.简介 1.什么是RunLoop从字面意思看运行循环跑圈 基本作用保持程序的持续运行处理App中的各种事件(比如触摸事件.定时器事件.Selector事件)节省CPU资源,提高程序性能:该做事时做事 ... 
- trigger() & bind() 使用心得
			trigger(type) 在每一个匹配的元素上触发某类事件. 返回值:jQuery 参数: type (String): 要触发的事件类型 示例: $("p").trigger( ... 
- spring mvc 页面编码和数据库编码 中文出现乱码
			1.前台与后台交互的时候,后台获取的中文为乱码,而且插入数据库数据也为乱码. 修改web.xml 添加编码的过滤器,全部设置为utf-8(注意加上forceEncoding) <filter&g ... 
- 三. 动态添加option选项
- C/C++相对论——C++中为什么要使用异常?
			C++中为什么要使用异常? 很多人也许知道C++中的异常机制,很多人也许不知道.很多人知道C中常用的assert,也知道在编译时候指定NODEBUG来忽略它. 对于C语言,使用正常的if-else即是 ... 
- admin 后台 bs模板
			http://bootsnipp.com/ https://almsaeedstudio.com/preview 
