导读:本章通过一个用户留言程序引出了用户输入带来的安全隐患和隐患之一的SQL注入的防范措施。
详细:
1 安全隐患
一个应用程序,如果没有任何的防范措施——针对用户输入,将带来如下安全隐患:
-SQL注入,例如,一个输入框,插入用户输入留言数据:
$sql_ins = "INSERT INTO tbl_name (user_id, comment) VALUES " . "({$_SESSION['user_id']}, {$_POST['comment']})";
用户输入了:go die);TRUNCATE tbl_name
可以预见将要发生的事儿。
-代码注入
-跨站点攻击(XSS)
2 防御措施
构建错误处理系统。主要有:
-穷举合法用户输入的合法数据
-测试边界、非预期的输入数据
在这个构建过程中,需注意:
-使用友好的格式化错误信息提示
-简化非法数据处理,就是不要试图去修复错误数据
-记录非预期输入数据,帮助分析程序的非法数据,帮助提高安全防范措施
-简化系统的使用方法(比如封装到一个类中,方便其他程序调用)