作为主要的前端开发人员,我希望通过PHP更好地理解服务器端安全性的限制。
假设我有一个包含MySQL数据库且只有index.php文件的Apache服务器。 (坏)设计如下:
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>.";
?>
显然你不能仔细阅读服务器端代码,比如客户端代码,除非服务器或代码(Can a client view server-side PHP source code?)出现严重错误,并且当然有办法保持硬编码密码安全(r)(Securing DB password in php)。
然而,我今天的问题是,即使我直接告诉人们我的数据库密码,如上面的index.php文件中,攻击者可以访问表的其他(有趣)列的方式是什么(如果有的话)只是上面的脚本自动查询?
答案 0 :(得分:1)
这确实是一个主观的问题,但我会尝试摆脱它。以上面的例子为例,事情可能会出错,例如,如果:
为保护代码,您可以做的任何小事都比没有好。没有安全性是100%完美,但是你插入的漏洞越多,破解你的安全性并做一些非常邪恶的事情变得越困难。正如我上面的第一点所示,它可能是完全出乎意料的事情。