12.2.4 Web问题
当连接MySQL数据库到网络的时候,一些特殊的安全问题就出现了。
建立一个专门用于网络连接的用户并不是一个坏主意。这样可以授予他们必要的、最少的权限,从而不给用户授予以下一些权限,例如DROP、ALTER或CREATE权限。我们可能只在类型表中授予SELECT权限,而只在订单表中授予INSERT权限。此外,这还是如何应用最少权限原则的例证。
提示 我们在上一章讨论了如何使用PHP的addslashes()函数和stripslashes()函数以去掉任何可能产生问题的字符。记住这样做和在将任何数据发送到MySQL数据库之前要执行一个常规的数据清理都是非常重要的。你可能记得,我们曾经使用了doubleval()函数来检查数字类型的数据是否真正是数字类型的数据。我们经常容易犯的一个错误就是会忘记它——人们往往记得使用addslashes()但是忘记检查数字型数据。
应该经常检查来自用户的所有数据。即使HTML表单中由选项框和按钮组成,一些人还是可能通过企图修改URL以进入脚本。此外,还应该检查用户数据的大小。
如果用户输入的密码或机密数据需要保存在数据库中,请注意,如果不使用SSL(Secure Sockets Layer,加密套接字层),这些数据将以纯文本的方式从浏览器传递到服务器。我们将在后面详细讨论SSL的应用。