劣质的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实现文件安全下载
Oct 09 PHP
15种PHP Encoder的比较
Apr 17 PHP
首页四格,首页五格For6.0(GBK)(UTF-8)[12种组合][9-18][版主安装测试通过]
Sep 24 PHP
PHP分多步骤填写发布信息的简单方法实例代码
Sep 23 PHP
浅析PHP中Collection 类的设计
Jun 21 PHP
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
Jun 28 PHP
PHP函数getenv简介和使用实例
May 12 PHP
php+ajax 实现输入读取数据库显示匹配信息
Oct 08 PHP
基于php实现随机合并数组并排序(原排序)
Nov 26 PHP
php版微信js-sdk支付接口类用法示例
Oct 12 PHP
PHP使用CURL实现下载文件功能示例
Jun 03 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
Oct 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 执行系统外部命令 system() exec() passthru()
2009/08/11 PHP
php模拟用户自动在qq空间发表文章的方法
2015/01/07 PHP
php字符串按照单词进行反转的方法
2015/03/14 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
2016/02/23 PHP
PHP简单获取及判断提交来源的方法
2016/04/22 PHP
PHP中检索字符串的方法分析【strstr与substr_count方法】
2017/02/17 PHP
jQuery 一个图片切换的插件
2011/10/09 Javascript
分享两款带遮罩的jQuery弹出框
2015/12/30 Javascript
Angularjs中的事件广播 —全面解析$broadcast,$emit,$on
2016/05/17 Javascript
JavaScript计算器网页版实现代码分享
2016/07/15 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
2016/09/29 Javascript
canvas实现图像放大镜
2017/02/06 Javascript
使用vs code开发Nodejs程序的使用方法
2017/09/21 NodeJs
一个基于react的图片裁剪组件示例
2018/04/18 Javascript
Javascript Dom元素获取和添加详解
2019/09/24 Javascript
NodeJS多种创建WebSocket监听的方式(三种)
2020/06/04 NodeJs
vue:el-input输入时限制输入的类型操作
2020/08/05 Javascript
JavaScript位置参数实现原理及过程解析
2020/09/14 Javascript
如何使用gpu.js改善JavaScript的性能
2020/12/01 Javascript
vue中父子组件的参数传递和应用示例
2021/01/04 Vue.js
Javascript实现打鼓效果
2021/01/29 Javascript
[46:20]TFT vs Secret Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
快速了解Python中的装饰器
2018/01/11 Python
Python 数据处理库 pandas 入门教程基本操作
2018/04/19 Python
Django 使用logging打印日志的实例
2018/04/28 Python
Python Json模块中dumps、loads、dump、load函数介绍
2018/05/15 Python
使用Python做垃圾分类的原理及实例代码附源码
2019/07/02 Python
python实现的生成word文档功能示例
2019/08/23 Python
实现Python3数组旋转的3种算法实例
2020/09/16 Python
使用python操作lmdb对数据读取的实例
2020/12/11 Python
Python爬虫之Selenium库的使用方法
2021/01/03 Python
高二历史教学反思
2014/01/25 职场文书
客户服务经理岗位职责
2014/01/29 职场文书
新闻专业毕业生求职信
2014/08/08 职场文书
2014年小学数学教师工作总结
2014/12/03 职场文书
史上最全的军训拉歌口号
2015/12/25 职场文书