我爱编程网小编给大家带来了php防sql注入漏洞可以用什么函数相关文章,一起来看一下吧。
本文目录一览:

php防sql注入漏洞可以用什么函数
1.函数的构建
function inject_check($sql_str) {
return eregi('select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile', $sql_str); // 进行过滤
}
function verify_id($id=null) {
if (!$id) { exit('没有提交参数!'); } // 是否为空判断
elseif (inject_check($id)) { exit('提交的参数非法!'); } // 注射判断
elseif (!is_numeric($id)) { exit('提交的参数非法!'); } // 数字判断
$id = intval($id); // 整型化
return $id;
}?
function str_check( $str ) {
if (!get_magic_quotes_gpc()) { // 判断magic_quotes_gpc是否打开
$str = addslashes($str); // 进行过滤
}
$str = str_replace("_", "\_", $str); // 把 '_'过滤掉
$str = str_replace("%", "\%", $str); // 把 '%'过滤掉
return $str;
}
function post_check($post) {
if (!get_magic_quotes_gpc()) { // 判断magic_quotes_gpc是否为打开
$post = addslashes($post); // 进行magic_quotes_gpc没有打开的情况对提交数据的过滤
}
$post = str_replace("_", "\_", $post); // 把 '_'过滤掉
$post = str_replace("%", "\%", $post); // 把 '%'过滤掉
$post = nl2br($post); // 回车转换
$post = htmlspecialchars($post); // html标记转换
return $post;
}
2.函数的使用实例
<?php
if (inject_check($_GET['id']))
{
exit('你提交的数据非法,请检查后重新提交!');
}
else
{
$id = $_GET['id'];
//处理数据………………
}
?>

thinkphp怎么做才是安全的sql防注入
-
注入的产生一般都是对用户输入的参数未做任何处理直接对条件和语句进行拼装.
代码举例:
//不安全的写法举例1
$_GET['id']=8;//希望得到的是正整数
$data=M('Member')->where('id='.$_GET['id'])->find();
$_GET['id']='8 or status=1';//隐患:构造畸形查询条件进行注入;
//安全的替换写法
$data=M('Member')->where(array('id'=>$_GET['id']))->find();//使用数组方式将自动使用框架自带的字段类型检测防止注入
$data=M('Member')->where(array('id'=>(int)$_GET['id']))->find();//类型约束
$data=M('Member')->where('id='.intval($_GET['id']))->find();//类型转换
$data=M('Member')->where(array('id'=>I('get.id','','intval')))->find();//本人习惯写法
$data=M('Member')->where(array('id'=>':id'))->bind(':id',I('get.id'))->select();//PDO驱动可以使用参数绑定
$data=M('Member')->where("id=%d",array($_GET['id']))->find();//预处理机制
//不安全的写法举例2
$_GET['id']=8;//希望得到的是正整数
$data=M()->query('SELECT * FROM `member` WHERE id='.$_GET['id']);//执行的SQL语句
$_GET['id']='8 UNION SELECT * FROM `member`';;//隐患:构造畸形语句进行注入;
2.防止注入的总的原则是<<根据具体业务逻辑,对来源于用户的值的范围,类型和正负等进行限制和判断>>,同时<<尽量使用THINKPHP自带的SQL函数和写法>>.
3.在THINKPHP3.2版本中的操作步骤是:
一:在项目配置文件中添加配置: 'DEFAULT_FILTER' => 'htmlspecialchars', //默认过滤函数
二: 使用框架带的I方法获取来自用户提交的数据;
例子:M('Member')->save(array('content'=>I('post.content')));这样添加的content内容是经过htmlspecialchars处理过的.
4.为COOKIE添加httponly配置
5.最新版本的thinkphp已经支持此参数。
我爱编程网
6.HTML5值得观注的新特性:
9.富文本过滤
富文本过滤是,XSS攻击最令人头疼的话题,不仅是小网站,就连BAT这样的巨头也是三天两头的被其困扰.

PHP代码网站如何防范SQL注入漏洞攻击建议分享
我爱编程网(https://www.52biancheng.com)小编还为大家带来PHP代码网站如何防范SQL注入漏洞攻击建议分享的相关内容。
做为网络开发者的你对这种黑客行为恨之入骨,当然也有必要了解一下SQL注入这种功能方式的原理并学会如何通过代码来保护自己的网站数据库。今天就通过PHP和MySQL数据库为例,分享一下我所了解的SQL注入攻击和一些简单的防范措施和一些如何避免SQL注入攻击的建议。
简单来说,SQL注入是使用代码漏洞来获取网站或应用程序后台的SQL数据库中的数据,进而可以取得数据库的访问权限。比如,黑客可以利用网站代码的漏洞,使用SQL注入的方式取得一个公司网站后台数据库里所有的数据信息。拿到数据库管理员登录用户名和密码后黑客可以自由修改数据库中的内容甚至删除该数据库。SQL注入也可以用来检验一个网站或应用的安全性。SQL注入的方式有很多种,但本文将只讨论最基本的原理,我们将以PHP和MySQL为例。本文的例子很简单,如果你使用其它语言理解起来也不会有难度,重点关注SQL命令即可。
一个简单的SQL注入攻击案例
假如我们有一个公司网站,在网站的后台数据库中保存了所有的客户数据等重要信息。假如网站登录页面的代码中有这样一条命令来读取用户信息。
$q
=
"SELECT
`id`
FROM
`users`
WHERE
`username`=
'
"
.$_GET['username'].
"
'
AND
`password`=
'
"
.$_GET['password'].
"
'
";?>现在有一个黑客想攻击你的数据库,他会尝试在此登录页面的用户名的输入框中输入以下代码:
'
;
SHOW
TABLES;
点击登陆键,这个页面就会显示出数据库中的所有表。如果他现在使用下面这行命令:
';
DROP
TABLE
[table
name];
这样他就把一张表删除了!
防范SQL注入
-
使用mysql_real_escape_string()函数
在数据库操作的代码中用这个函数mysql_real_escape_string()可以将代码中特殊字符过滤掉,如引号等。如下例:
$q
=
"SELECT
`id`
FROM
`users`
WHERE
`username`=
'
"
.mysql_real_escape_string(
$_GET['username']
).
"
'
AND
`password`=
'
"
.mysql_real_escape_string(
$_GET['password']
).
"
'
";?>防范SQL注入
-
使用mysql_query()函数
mysql_query()的特别是它将只执行SQL代码的第一条,而后面的并不会执行。回想在最前面的例子中,黑客通过代码来例后台执行了多条SQL命令,显示出了所有表的名称。所以mysql_query()函数可以取到进一步保护的作用。我们进一步演化刚才的代码就得到了下面的代码:
//connection
$database
=
mysql_connect("localhost",
"username","password");
//db
selection
$q
=
mysql_query("SELECT
`id`
FROM
`users`
WHERE
`username`=
'
"
.mysql_real_escape_string(
$_GET['username']
).
"
'
AND
`password`=
'
"
.mysql_real_escape_string(
$_GET['password']
).
"
'
",
$database);?>除此之外,我们还可以在PHP代码中判断输入值的长度,或者专门用一个函数来检查输入的值。所以在接受用户输入值的地方一定要做好输入内容的过滤和检查。当然学习和了解最新的SQL注入方式也非常重要,这样才能做到有目的的防范。如果使用的是平台式的网站系统如Wordpress,要注意及时打上官方的补丁或升级到新的版本。
以上就是我爱编程网小编给大家带来的php防sql注入漏洞可以用什么函数,希望能对大家有所帮助。更多相关文章关注我爱编程网:
www.52biancheng.com免责声明:文章内容来自网络,如有侵权请及时联系删除。