PHP / SQL数据库查询良好实践和安全性

前端之家收集整理的这篇文章主要介绍了PHP / SQL数据库查询良好实践和安全性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我是一个有点经验丰富的PHP开发人员,自2007年以来一直在做“该死的事”.但是,在保护我的应用程序方面,我仍然相对较差.在我不知道的一切方式中,我知道我可以而且应该.

我已经拿起了Securing PHP Web Applications并正在阅读我的方式来测试一路上的东西.我对与数据库查询有关的一般SO组有一些问题(主要是在MysqL下):

创建将数据放入数据库的应用程序时,MysqL_real_escape_string和输入数据的一般检查(is_numeric等)是否足够?那些与sql注入不同的其他类型的攻击呢?

有人可以解释存储过程和准备好的语句,而不是 – 你制作它们并调用它们.我想知道它们是如何工作的,幕后的验证是什么.

我在PHP4绑定环境中工作,PHP5暂时不是一个选项.有没有其他人曾经在这个位置,你做了什么来保护你的应用程序,而所有酷孩子都在使用这个甜蜜的新MysqLi界面?

人们发现有哪些一般的良好做法是有利的,强调创建一个能够承受升级和可能的迁移的基础设施(比如将PHP4移到PHP5).

注意:有一个搜索周围找不到任何类似于这个打到PHP-MysqL安全性.

我的建议:

> ditch MysqLi支持PDO(使用MysqL驱动程序)
>使用PDO paremeterized准备好的陈述

然后你可以这样做:

$pdo_obj = new PDO( 'MysqL:server=localhost; dbname=mydatabase',$dbusername,$dbpassword );

$sql = 'SELECT column FROM table WHERE condition=:condition';
$params = array( ':condition' => 1 );

$statement = $pdo_obj->prepare( $sql,array( PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY ) );
$statement->execute( $params );
$result = $statement->fetchAll( PDO::FETCH_ASSOC );

优点:

>不再需要手动转发,因为PDO为您完成了所有工作!
>突然切换数据库后端相对容易.

缺点:

>我想不出任何.

猜你在找的PHP相关文章