首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这是不是有点过头了,还是我做的对?

这是不是有点过头了,还是我做的对?
EN

Stack Overflow用户
提问于 2011-04-29 10:14:33
回答 5查看 204关注 0票数 3

可能重复: 防止SQL注入的最佳方法?

用于登录:

代码语言:javascript
复制
$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注入的正确方法吗?还是完全过火了?一切都很好,没有什么是坏的--我的问题是,我是否在一起使用过时的东西?我在这份工作中只应该使用一个函数吗?

谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-04-29 10:19:34

如果我使用<mysecretpassword>作为密码呢?

它将被剥夺,任何人都可以以我的身份登录。

我认为您应该按原样存储用户名和密码,并且只在显示用户名和密码时执行htmlspecialchars操作。

除非您真的不喜欢像strip_tags这样的用户名,否则这里似乎根本没有必要使用BlaBla aka Yada-Yada <C00lHax0r>

票数 2
EN

Stack Overflow用户

发布于 2011-04-29 10:18:40

mysql_real_escape_string应该足够…其他的事情,你应该检查用户在哪里注册自己。

票数 2
EN

Stack Overflow用户

发布于 2011-04-29 10:19:27

您确实对MySQL注入进行了保护,但是所存储的字符串与其原始格式相去甚远。当您将字符串拔出并回显时,应该使用诸如strip_tags、htmlspecialchars和trim之类的函数。

原因是,有时您可能想要字符串的原始格式,因此您可以,例如,您可以只删除一些标签,而不是全部-或者,您可能希望只使用htmlspecialchars而不剥离任何标签。关键在于,当您显示字符串时,能够轻松地将字符串转换为您需要的字符串。这意味着,您需要保持字符串的原始格式。为了做到这一点,您不需要strip_tags或htmlspecialchars-it。

另一件事是,每个人和他们的祖父母都在使用PDO,您可能需要开始使用它,因为它确实使您对SQL注入免疫。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5830748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档