可能重复: 防止SQL注入的最佳方法?
用于登录:
$username = mysql_real_escape_string(htmlspecialchars(strip_tags(trim($_POST['username'])), ENT_QUOTES));
$password = mysql_real_escape_string(htmlspecialchars(strip_tags(trim($_POST['password'])), ENT_QUOTES));为了插入数据,我重复使用相同的mysql_real_escape_string(htmlspecialchars(strip_tags(trim(...。
我觉得这是个糟糕的练习因为我使用了太多的功能..。这是防止mysql注入和防止xss注入的正确方法吗?还是完全过火了?一切都很好,没有什么是坏的--我的问题是,我是否在一起使用过时的东西?我在这份工作中只应该使用一个函数吗?
谢谢。
发布于 2011-04-29 10:19:34
如果我使用<mysecretpassword>作为密码呢?
它将被剥夺,任何人都可以以我的身份登录。
我认为您应该按原样存储用户名和密码,并且只在显示用户名和密码时执行htmlspecialchars操作。
除非您真的不喜欢像strip_tags这样的用户名,否则这里似乎根本没有必要使用BlaBla aka Yada-Yada <C00lHax0r>。
发布于 2011-04-29 10:18:40
mysql_real_escape_string应该足够…其他的事情,你应该检查用户在哪里注册自己。
发布于 2011-04-29 10:19:27
您确实对MySQL注入进行了保护,但是所存储的字符串与其原始格式相去甚远。当您将字符串拔出并回显时,应该使用诸如strip_tags、htmlspecialchars和trim之类的函数。
原因是,有时您可能想要字符串的原始格式,因此您可以,例如,您可以只删除一些标签,而不是全部-或者,您可能希望只使用htmlspecialchars而不剥离任何标签。关键在于,当您显示字符串时,能够轻松地将字符串转换为您需要的字符串。这意味着,您需要保持字符串的原始格式。为了做到这一点,您不需要strip_tags或htmlspecialchars-it。
另一件事是,每个人和他们的祖父母都在使用PDO,您可能需要开始使用它,因为它确实使您对SQL注入免疫。
https://stackoverflow.com/questions/5830748
复制相似问题