劣质的PHP代码简化


Posted in PHP onFebruary 08, 2010
<? 
echo("<p>search results for query:"). 
$_GET['query'].".</p>"; 
?>

这段代码的主要问题在于它把用户提交的数据直接显示到了网页上,从而产生XSS漏洞。其实有很多方法可以填补这个漏洞。那么,什么代码是我们想要的呢?
<? 
echo("<p>search results for query:"). 
htmlspecialchars($_GET['query']).".</p>"; 
?>

这是最低要求。XSS漏洞用htmlspecialchars函数填补了,从而屏蔽了非法字符。

<?php 
if(isset($_GET['query'])) 
echo'<p>search results for query:', 
htmlspecialchars($_GET['query'],ENT_QUOTES).'.</p>'; 
?>

能写出这样代码的人应该是我想要录用的人了:
*<?被替换成了<?php,这样更符合XML规范。
*在输出$_GET['query']值前先判断它是否为空。
*echo命令中多余的括号被去掉了。
*字符串用单引号限定,从而节省了PHP从字符串中搜索可替换的变量的时间。
*用逗号代替句号,节省了echo的时间。
*将ENT_QUOTES标识传递给htmlspecialchars函数,从而保证单引号也会被转义,虽然这并不是最主要的,但也算是一个良好的习惯
PHP 相关文章推荐
用PHP ob_start()控制浏览器cache、生成html实现代码
Feb 16 PHP
PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
May 07 PHP
关于使用coreseek并为其做分页的介绍
Jun 21 PHP
解析wamp5下虚拟机配置文档
Jun 27 PHP
PHP循环函数使用介绍之PHP基础入门教程
Sep 21 PHP
thinkphp中memcache的用法实例
Nov 29 PHP
php数组合并与拆分实例分析
Jun 12 PHP
php $_SESSION会员登录实例分享
Jan 19 PHP
PHP实现随机生成水印图片功能
Mar 22 PHP
thinkPHP实现的联动菜单功能详解
May 05 PHP
在Laravel5.6中使用Swoole的协程数据库查询
Jun 15 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
Mar 11 PHP
php下把数组保存为文件格式的实例应用
Feb 08 #PHP
php date与gmdate的获取日期的区别
Feb 08 #PHP
php 获取当前访问的url文件名的方法小结
Feb 08 #PHP
用php实现的下载css文件中的图片的代码
Feb 08 #PHP
php不用内置函数对数组排序的两个算法代码
Feb 08 #PHP
Linux下将excel数据导入到mssql数据库中的方法
Feb 08 #PHP
PHPWind 发帖回帖Api PHP版打包下载
Feb 08 #PHP
You might like
PHP中simplexml_load_string函数使用说明
2011/01/01 PHP
Laravel 4 初级教程之Pages、表单验证
2014/10/30 PHP
PHP fopen函数用法实例讲解
2019/02/15 PHP
PHP中isset、empty的用法与区别示例详解
2020/11/05 PHP
json 定义
2008/06/10 Javascript
使用javascript做的一个随机点名程序
2014/02/13 Javascript
浅谈jquery回调函数callback的使用
2015/01/30 Javascript
Jquery uploadify上传插件使用详解
2016/01/13 Javascript
jquery获取点击控件的绝对位置简单实例
2016/10/13 Javascript
Jquery删除css属性的简单方法
2016/12/04 Javascript
JavaScript无缝滚动效果的实例代码
2017/03/27 Javascript
值得分享和收藏的xmlplus组件学习教程
2017/05/05 Javascript
Vue数据双向绑定原理及简单实现方法
2018/05/18 Javascript
vue超时计算的组件实例代码
2018/07/09 Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
2018/08/12 Javascript
mpvue+vant app搭建微信小程序的方法步骤
2019/02/11 Javascript
Vue 利用指令实现禁止反复发送请求的两种方法
2019/09/15 Javascript
uni-app如何实现增量更新功能
2020/01/03 Javascript
Vue项目移动端滚动穿透问题的实现
2020/05/19 Javascript
[01:34:42]NAVI vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python中的MongoDB基本操作:连接、查询实例
2015/02/13 Python
在Python中使用NLTK库实现对词干的提取的教程
2015/04/08 Python
Python中的字符串操作和编码Unicode详解
2017/01/18 Python
python中requests使用代理proxies方法介绍
2017/10/25 Python
Mac中Python 3环境下安装scrapy的方法教程
2017/10/26 Python
深入理解python中函数传递参数是值传递还是引用传递
2017/11/07 Python
Python中的单行、多行、中文注释方法
2018/07/19 Python
python 将对象设置为可迭代的两种实现方法
2019/01/21 Python
简单了解python关系(比较)运算符
2019/07/08 Python
Python3如何使用tabulate打印数据
2020/09/25 Python
初中高效课堂实施方案
2014/02/26 职场文书
党小组鉴定意见
2015/06/02 职场文书
2016年寒假见闻
2015/10/10 职场文书
礼仪培训心得体会
2016/01/22 职场文书
redis 查看所有的key方式
2021/05/07 Redis
MySQL5.7并行复制原理及实现
2021/06/03 MySQL