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_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为您完成了所有工作! 缺点: >我想不出任何. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |