这个登录结构是否可以安全地从SQL注入?

时间:2013-05-23 16:41:49

标签: php login

我想/我正忙着完全重写我的整个网站。在这一点上,我正在研究我所谓的“成员和安全引擎”。我一直在阅读很多关于安全性和SQL注入的内容,而且它非常复杂。 PS。我的网站不仅仅是一个拥有约250多名会员的专业赚钱网站。

对于用户名和密码,我只允许字符a-z,A-Z和0-9。我在if(isset(post)) - 函数中检查了这个:

if(ctype_alnum(mysql_real_escape_string(stripslashes($string))) == false) {
    header to error-page; exit;}
else {continu with script}

对密码和用户名都进行了此检查。

如果有人尝试使用未知用户名或密码错误的已知用户名登录,则会在特殊表格中记录(插入)操作,包括IP地址。在尝试使用未知用户名登录10次或使用错误密码进行6次尝试后,IP地址将被阻止从成员区域和所有非成员页面表单上提交,并且表单的提交未显示且由于以下情况而无法使用这个ip-block。提交表单时,我甚至将此ip检查作为一行...如果ip在表中,则为标题(到错误页面);出口;

我的问题:

  • 我放置时需要进行安全检查 字符串中的IP地址? $xip = $_SERVER['REMOTE_ADDR'];这是$xip 尝试使用未知用户登录时插入表中 密码错误。
  • 这是一个(非常)安全的环境来防止黑客攻击和SQL注入吗?
  • 如果没有?我非常感谢帮助和建议(在这里写完整的解决方案非常感谢,但我学到了很多东西 更多当你向我发送正确的解决方案时)
  • 当我从$_cookie$_session检索此信息时,是否还必须运行“ctype_alnum”检查?

PS。我是荷兰人,所以我的几乎所有的表名,列名,形式输入字段名等等都有一个荷兰语。我仍然在努力,但是当网站完成后,您将无法在我的网站上找到“密码”,“传递”,“用户”,“用户ID”或类似内容。

2 个答案:

答案 0 :(得分:1)

使用带有MySQLi或PDO的预准备语句是防止SQL注入的第一步,而且无论如何都不推荐使用mysql_ *命令。

但是,回答关于防止SQL注入的最佳实践的问题的最佳位置是OWASP:它们为一般方法和代码审查以及特定于语言的指南和库提供了许多很好的资源。

https://www.owasp.org/index.php/Guide_to_SQL_Injection https://www.owasp.org/index.php/Reviewing_Code_for_SQL_Injection

答案 1 :(得分:0)

  1. 不,你不必,这个变量是安全的。请查看:Is it safe to trust serverremot addr
  2. 这取决于您必须发布整个身份验证代码
  3. 通常一个好的做法是从数据库中选择每个用户,然后迭代它们并比较用户名/密码以找到匹配项。这样您就不需要在SQL语句中放置用户输入。
  4. 这取决于您对这些内容的处理方式。
相关问题