我有一个基于PHP的网站与MySQL数据库。 几天前,我收到一封电子邮件,其中包含数据库中的所有用户以及他们的解码密码(密码使用MD5编码)。
在更改所有密码(ftp,数据库和所有用户的密码)之后,我收到了一封包含用户新信息的电子邮件。
我已经使用mysql_real_escape_string和htmlentities来消毒用户input。 不知道还有什么要做,以保护网站从另一个入侵。 有没有人有任何想法,如何发生这种事情,我可以做什么来防止它?
非常感谢您的帮助!
询问攻击者。 他们联系你(而不是保持安静,只是出售信息),所以他们也想帮助你。
检查所有的SQL查询,查找错过的input转义等。 请特别注意查询用户表,特别是如果您执行SELECT * 。
避免SELECT *尽可能多 – 只需select你需要的字段。
htmlentities不正确地转义要插入SQL查询中的数据。 你应该总是使用mysql_real_escape_string。 htmlentities和htmlspecialchars被用来清理数据之前,它的浏览器。
考虑使用准备好的语句,例如PDO 。 这将大大减轻SQL注入的安全性,因为数据完全不需要转义。 (在回到浏览器之前,你仍然需要htmlentities,但是XSS是一个不同的话题)。
尝试将您的SQL查询更改为Prepared Statements 。
还请联系您的主机从他们得到一些帮助。
如果您使用的是CMS,请检查CMS的最新修补程序。
使用MD5与盐和多个MD5哈希轮。