Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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 创建安全登录_Php_Jquery_Ajax - Fatal编程技术网

Php 创建安全登录

Php 创建安全登录,php,jquery,ajax,Php,Jquery,Ajax,我正在试着做一个登录表单,我想知道我是否遗漏了什么或是找过头了什么。通常我是这样做的: 获取用户名/密码表单user并测试它是否满足基本语法要求 使用Ajax将用户名和密码发送到php,使用转义字符串防止sql注入 一旦我在php上获得了密码,我就对密码进行散列,并将其与数据库进行比较,以查看是否存在匹配项。如果存在匹配项,我将返回一个URL到下一页,并在会话中设置用户名,并创建一个会话变量以指示我已登录 进入下一页后,我运行一个函数,查看登录的会话变量是否已设置,是否将继续,否则将重新引导用

我正在试着做一个登录表单,我想知道我是否遗漏了什么或是找过头了什么。通常我是这样做的:

  • 获取用户名/密码表单user并测试它是否满足基本语法要求
  • 使用Ajax将用户名和密码发送到php,使用转义字符串防止sql注入
  • 一旦我在php上获得了密码,我就对密码进行散列,并将其与数据库进行比较,以查看是否存在匹配项。如果存在匹配项,我将返回一个URL到下一页,并在会话中设置用户名,并创建一个会话变量以指示我已登录
  • 进入下一页后,我运行一个函数,查看登录的会话变量是否已设置,是否将继续,否则将重新引导用户进入登录页。我不确定该将代码放在哪里,以检查用户是否登录。我通常会将它放在文档准备好的外部,但它会允许用户在被引导之前看到页面的提示

这个问题最适合
securitystackexchange
,但这里有一些提示:

1) 您需要所有请求都通过ssl进行传输。
2) ajax和javascript与sql注入无关。您必须使用准备好的语句来查询数据库,以避免sql注入。
3) 转义html(如果您实际引用了它,则应在将html放到屏幕上之前进行转义)
4) 您应该保护您的表单,包括登录表单,以防csrf攻击。您可以使用nonce执行此操作。

6) 成功登录后,您应该创建一个新会话。

由于许多原因,您所要求的内容与主题无关。我认为现在是你浏览帮助区的好时机,如果你还没有浏览过帮助区以及其中的相关链接的话。通读一遍,您将看到这里的堆栈溢出是如何工作的。这将给你一个好主意,如何制定一个好的问题,看看什么可以和不应该被问,以及什么是期望从你。这是为了帮助(你)在堆栈溢出方面有一个更好、积极的体验,这是每个人都想要和追求的。你没有提到这应该通过https实现。当然,也不是用户进入一个页面,然后该页面检查他们是否登录,当用户请求需要登录的页面时,服务器应检查其状态。如果他们没有登录,服务器(本例中是php)应该将他们重定向到登录,而不是客户端。