劣质的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 相关文章推荐
Discuz 模板引擎的封装类代码
Jul 18 PHP
将数组写入txt文件 var_export
Apr 21 PHP
php设计模式 Adapter(适配器模式)
Jun 26 PHP
如何使用PHP批量去除文件UTF8 BOM信息
Aug 05 PHP
php遍历目录方法小结
Mar 10 PHP
php中使用gd库实现下载网页中所有图片
May 12 PHP
PHP配置把错误日志以邮件方式发送方法(Windows系统)
Jun 23 PHP
PHP7.0版本备注
Jul 23 PHP
CodeIgniter常用知识点小结
May 26 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
Feb 18 PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
Aug 06 PHP
php慢查询日志和错误日志使用详解
Feb 27 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语法速查表
2006/12/06 PHP
解析MySql与Java的时间类型
2013/06/22 PHP
php的sso单点登录实现方法
2015/01/08 PHP
PHP getallheaders无法获取自定义头(headers)的问题
2016/03/23 PHP
NiftyCube——轻松实现圆角边框
2007/02/20 Javascript
Javascript 获取链接(url)参数的方法[正则与截取字符串]
2010/02/09 Javascript
jQuery 类twitter的文本字数限制带提示效果插件
2010/04/16 Javascript
qq悬浮代码(兼容各个浏览器)
2014/01/29 Javascript
js利用prototype调用Array的slice方法示例
2014/06/09 Javascript
bootstrap网页框架的使用方法
2016/05/10 Javascript
在html中引入外部js文件,并调用带参函数的方法
2016/10/31 Javascript
网页挂马方式整理及详细介绍
2016/11/03 Javascript
nodejs进阶(6)—连接MySQL数据库示例
2017/01/07 NodeJs
Bootstrap响应式表格详解
2017/05/23 Javascript
老生常谈Bootstrap媒体对象
2017/07/06 Javascript
基于 Vue 实现一个酷炫的 menu插件
2017/11/14 Javascript
解决Mac node版本升级失败的问题
2018/05/16 Javascript
angular 实现的输入框数字千分位及保留几位小数点功能示例
2018/06/19 Javascript
angularJs提交文本框数据到后台的方法
2018/10/08 Javascript
JS使用队列对数组排列,基数排序算法示例
2019/03/02 Javascript
JavaScript面向对象编程小游戏---贪吃蛇代码实例
2019/05/15 Javascript
[01:01:18]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#2COL VS LGD
2016/03/03 DOTA
总结python爬虫抓站的实用技巧
2016/08/09 Python
Python2.7编程中SQLite3基本操作方法示例
2017/08/09 Python
python对绑定事件的鼠标、按键的判断实例
2019/07/17 Python
Python3.9最新版下载与安装图文教程详解(Windows系统为例)
2020/11/28 Python
John Hardy官方网站:手工设计首饰的奢侈品牌
2017/07/05 全球购物
奥地利票务门户网站:oeticket.com
2019/12/31 全球购物
Java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用?
2015/08/04 面试题
学校后勤人员职责
2013/12/27 职场文书
公司领导九九重阳节发言稿2014
2014/09/25 职场文书
银行委托书范本
2014/09/28 职场文书
学习杨善洲同志先进事迹心得体会
2016/01/23 职场文书
Java如何实现树的同构?
2021/06/22 Java/Android
MySQL中IO问题的深入分析与优化
2022/04/02 MySQL
Mysql数据库group by原理详解
2022/07/07 MySQL