Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 此登录结构对SQL注入安全吗?_Php_Login - Fatal编程技术网

Php 此登录结构对SQL注入安全吗?

Php 此登录结构对SQL注入安全吗?,php,login,Php,Login,我想/我正忙于完全重写我的整个网站。在这一点上,我正在致力于我所谓的“成员和安全引擎”。我已经读了很多关于安全性和SQL注入的书,它相当复杂。 另外,我的网站与其说是一个拥有250多名会员的专业赚钱网站,不如说是一种爱好 对于用户名和密码,我只允许使用字符a-z、a-z和0-9。我在if(isset(post))-函数中检查这一点: if(ctype_alnum(mysql_real_escape_string(stripslashes($string))) == false) { he

我想/我正忙于完全重写我的整个网站。在这一点上,我正在致力于我所谓的“成员和安全引擎”。我已经读了很多关于安全性和SQL注入的书,它相当复杂。 另外,我的网站与其说是一个拥有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阻止,因此无法使用。我甚至在提交表单时将此ip检查作为一行。。。如果ip在表中,标题(到错误页);退出

我的问题是:

  • 当我放置文件时,是否需要进行安全检查 字符串中的IP地址<代码>$xip=$\u服务器['REMOTE\u ADDR']
    $xip
    为 尝试使用未知用户登录时插入到表中,或 密码错误
  • 这是一个(相当)安全的环境,可以抵御黑客攻击和SQL注入吗
  • 如果没有?我非常感谢您的帮助和建议(非常感谢您在这里编写完整的解决方案,但我学到了很多 当您让我找到正确的解决方案时,会有更多信息)
  • 当我从
    $\u cookie
    $\u会话
    检索此信息时,是否也必须运行“ctype\u alnum”检查

另外,我是荷兰人,所以几乎我所有的表名、列名、表单输入字段名等都有荷兰语单词。我仍在努力,但当网站完成后,你在我的网站上找不到“password”、“pass”、“user”、“userid”或类似的词。

必须将准备好的语句与MySQLi或PDO一起使用,这是防止SQL注入的第一步,mysql_*命令无论如何都不推荐使用

但是,要回答您关于防止SQL注入的最佳实践的问题,最好的地方是OWASP:他们有很多关于通用方法和代码审查的优秀资源,以及特定于语言的指南和库


必须将准备好的语句与MySQLi或PDO一起使用,这是防止SQL注入的第一步,无论如何,mysql_*命令都不推荐使用

但是,要回答您关于防止SQL注入的最佳实践的问题,最好的地方是OWASP:他们有很多关于通用方法和代码审查的优秀资源,以及特定于语言的指南和库

  • 不,你不必这样做,这个变量是安全的。看看:
  • 视情况而定,您必须发布整个身份验证代码
  • 通常,一个好的做法是从数据库中选择每个用户,然后迭代它们并比较用户名/密码以找到匹配项。这样,您就不需要将用户输入放在SQL语句中
  • 这取决于你如何处理这些内容
  • 不,你不必这样做,这个变量是安全的。看看:
  • 视情况而定,您必须发布整个身份验证代码
  • 通常,一个好的做法是从数据库中选择每个用户,然后迭代它们并比较用户名/密码以找到匹配项。这样,您就不需要将用户输入放在SQL语句中
  • 这取决于你如何处理这些内容

  • 如果你要重写整个站点,那么就用MySQLi或PDO用准备好的语句重写,而不是用MySQL库重写。如果你要重写整个站点,那么就用MySQLi或PDO用准备好的语句重写,而不是用MySQL库重写。两点钟。“您必须发布整个身份验证代码”是什么意思?4点。我想。。。当我在表单中使用从cookie或会话中检索到的信息时,我应该进行ctype_alnum检查,否则它将保存以供使用。您的问题集中在用户身份验证部分,因此如果不查看它,很难判断它是否安全。现在,关于$\u COOKIE和$\u会话数组的成员,如果在SQL语句中使用它们,特别是对于$\u COOKIE数组,您需要处理它们。使用prepared语句绝对是必须的,因为您可以消除所有可能封装到variables.thanx中的邪恶。两点钟。“您必须发布整个身份验证代码”是什么意思?4点。我想。。。当我在表单中使用从cookie或会话中检索到的信息时,我应该进行ctype_alnum检查,否则它将保存以供使用。您的问题集中在用户身份验证部分,因此如果不查看它,很难判断它是否安全。现在,关于$\u COOKIE和$\u会话数组的成员,如果在SQL语句中使用它们,特别是对于$\u COOKIE数组,您需要处理它们。使用prepared语句绝对是必须的,因为您可以消除可能封装到变量中的所有弊端。