作为主要的前端开发人员,我想更好地了解 PHP 的服务器端安全性限制。
假设我有一个 Apache 服务器,其中包含一个 MySQL 数据库和一个 index.php 文件。(坏)设计如下:
- 包含私人信息的数据库,称为“top_secret_database”
- 该数据库中的单个表,称为“juicy_data”
- 同一个表中的一个列,它具有称为“not_important_column”的非私有、非有趣信息
index.php 的内容是:
<?php mysql_connect("www.example.com", "db_user_name", "foo") or die(mysql_error()); mysql_select_db("top_secret_database") or die(mysql_error()); $not_secret_column = mysql_query("SELECT not_important_column FROM juicy_data") or die(mysql_error()); echo "The password to my Top Secret Database is <strong>foo</strong>."; ?>
显然,您不能像客户端代码那样仔细阅读服务器端代码,除非服务器或代码出现严重错误(客户端可以查看服务器端 PHP 源代码吗?),当然还有一些方法可以保持硬编码密码安全(r)(在 php 中保护数据库密码)。
但是,我今天的问题是,即使我像上面的 index.php 文件那样直接告诉人们我的数据库密码,攻击者可以通过哪些方式(如果有的话)访问刚刚发布的表的其他(有趣的)列由上述脚本自动查询?