我目前正在使用php标准库函数来清理mysql_query函数的字符串输入(不仅仅是stripslashes和mysql_client_encoding,还要检查整个查询的一致性,包括验证一些关键字段值并检查一些表访问限制)
我被告知,使用像CakePHP或PEAR这样的开发框架/扩展库可以让我在任何项目中面对这个问题时更轻松,无论多么小。
从我的观点来看,当做一些简单的小项目时,添加到标准库中的任何东西都很难处理并且通常不值得付出努力,但我真的很想从头开始探索代码的替代方法。在那里。
有关在何处或以什么开始的任何建议?
答案 0 :(得分:1)
PHP PDO使用准备好的查询处理所有卫生设施。它已经为您编写,默认包含在PHP> = 5.1中。此外,它还与一系列数据库引擎(MySQL,MsSQL,Oracle,PostgreSQL,SQLite等)兼容,并增加了对事务的支持。
//Works for
$id = 23;
$id = 'harmless string';
$id = '0 OR WHERE 1 = 1 --';
$pdo = new PDO('mysql:host=localhost', $username, $password);
$stmt = $pdo->prepare('SELECT title, body FROM posts WHERE id = :id');
$stmt->execute(array(
':id' => $id // Automatically handles sanitizing
));
$results = $stmt->fetchAll();
答案 1 :(得分:1)
如果您尚未执行此操作,请至少考虑使用database extensions之一,而不是mysql_query()
,而不是mysql_real_escape_string()
。如果你正确使用它们,它们有一些非常好的功能,例如查询清理以阻止SQL注入,而不必记住运行{{1}}。