没有合适的资源?快使用搜索试试~ 我知道了~
10条PHP高级技巧,让你提高php效率。
资源推荐
资源详情
资源评论
10条条PHP高级技巧高级技巧[修正版修正版]
10条PHP高级技巧,让你提高php效率。
1.使用一个使用一个SQL注射备忘单注射备忘单
一个基本的原则就是,永远不要相信用户提交的数据。
另一个规则就是,在你发送或者存储数据时对它进行转义(escape)。
可以总结为:filter input, escape output (FIEO). 输入过滤,输出转义。
通常导致SQL注射漏洞的原因是没有对输入进行过滤,如下语句:
复制代码 代码如下:
<?php
$query = "SELECT *
FROM users
WHERE name = '{$_GET['name']}'";
在这个例子中,$_GET['name']来自用户提交的数据,既没有进行转义,也没有进行过滤~~
对于转义输出,你要记住用于你程序外部的数据需要被转义,否则,它可能被错误地解析。
相反,过滤输入能确保数据在使用前是正确的.
对于过滤输入,你要记住,在你程序外部的原始数据需要被过滤,因为它们是不可信任的。
如下例子演示了输入过滤和输出转义:
复制代码 代码如下:
<?php
// Initialize arrays for filtered and escaped data, respectively.
$clean = array();
$sql = array();
// Filter the name. (For simplicity, we require alphabetic names.)
if (ctype_alpha($_GET['name'])) {
$clean['name'] = $_GET['name'];
} else {
// The name is invalid. Do something here.
}
// Escape the name.
$sql['name'] = mysql_real_escape_string($clean['name']);
// Construct the query.
$query = "SELECT *
FROM users
WHERE name = '{$sql['name']}'";
?>
另一个有效防止SQL注射的方法是使用prepare 语句,如:
复制代码 代码如下:
<?php
// Provide the query format.
$query = $db->prepare('SELECT *
FROM users
WHERE name = :name');
// Provide the query data and execute the query.
$query->execute(array('name' => $clean['name']));
?>
2.了解比较运算符之间的不同了解比较运算符之间的不同
例如,你使用strpos() 来检测在一个字符串中是否存在一个子串 (如果子串没有找到,函数将返回 FALSE ), 结果可能会导致错
误:
复制代码 代码如下:
<?php
$authors = 'Chris & Sean';
if (strpos($authors, 'Chris')) {
echo 'Chris is an author.';
} else {
echo 'Chris is not an author.';
}
?>
资源评论
weixin_38577648
- 粉丝: 3
- 资源: 943
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功