我想升级并使之更系统化,我的保护免受 sql 注入攻击。我收集了三个主要方法是 pdo、prepared statements 和 mysql_escape_string,pdo 被认为是最好的,但如果你很细致,mysql_escape_string 被认为是足够的。我认为我还没有准备好使用 PDO 或准备好的语句,因为我有很多涉及多个表的复杂查询,所以这将是一项艰巨的任务。但我想更加程序化地使用 mysql_escape_string。
我没有转义用户提交的每个单独变量,而是考虑使用可能需要一些修改来处理标点符号的标准函数转义 SQL 命令这是一种合理的方法还是转义整个查询会产生问题 - 我确实使用撇号、反引号和 %,例如。似乎每个 sql 语句的标准函数会比变量方法更系统和标准。那么问题是可能需要进行哪些修改来处理标点符号?另外,当我收集到 mysql_escape_string 不是 100% 完成时,是否还有其他内容应该进入函数,例如 htmlspecialchars 和 strip_tags?
这里是基本功能。
function safe($sql) {
$safesql = mysql_real_escape_string($sql);
return $safesql;
}