1

这是我第一次为用户交互创建数据库,我有一些“愚蠢”的问题,但我不知道如何用谷歌搜索它们以获得正确的答案,所以这里是:

我想要的是:

我想要一个数据库,其中会有写评论和文章的用户。我将拥有用户的关键信息,例如姓名和地址,也许还有我必须恢复的信用卡。

我做了什么

我创建了一个数据库,其中包含一个包含用户信息的表,然后与一个包含评论的表和另一个与文章相关的表。

我的问题

1)当你做一个数据库连接时,你是否每次都使用同一个用户(当然不是root)然后你比较昵称并通过?这就是我所拥有的,但这对我来说很奇怪,因为如果有人知道我的用户并通过连接到 db 将拥有所有信息。我想为每个用户都有一个帐户,但是我如何限制添加//删除/只查看他们帐户的内容?

2)我已经阅读了一些问题,现在我知道我必须存储密码并将它们与 bcrypt 进行比较。另外我知道信用卡不推荐存储,所以我可能不会这样做,但对于其他事情(地址,姓名),这是存储它们的最佳方式吗?

3)如果用户进行连接并且很可能会在短时间内完成更多操作,那么每次关闭和打开连接会更好吗?如何控制会话?代码是用 php 编写的,用于将移动设备连接到 mysql。

4

2 回答 2

1

您不应该使用从应用程序直接连接到您的 MySQL 服务器 - 这是一个巨大的安全漏洞。用户或黑客既可以嗅探流量以获取凭据,也可以反汇编应用程序来获取它们。相反,当然是通过 PHP 和 https 安全的 HTTP POST 和 GET 在服务器端进行。

您可以在 MySQL 服务器中自动为您的应用程序的每个用户添加一个用户,但这可能会更复杂。

于 2012-07-09T23:15:30.773 回答
1

首先,不要将信用卡存储在您自己的数据库中。使用诸如条带之类的东西来标记数据(免费注册,任何人都可以接受)。

如果您正在使用自己的用户名和密码做一个移动应用程序,那么使用用户名/密码的远程服务器是可行的方法。散列通常是比加密更好的密码方法,因为散列是一种方法(您可以知道密码是否匹配,但您永远无法将密码作为字符串检索)。

至于连接到你的数据库,不要直接连接到它。通过服务器上的 api / web 服务来完成。

要从服务器获取信息,您可能需要使用 json 并使用 GET 和 POST 请求。这是一个在服务器上处理登录请求的简单示例(从设备发帖):

<?php

if(isset($_POST['username']) && isset($_POST['password']))
{
  //See if the user's auth details are valid
  $auth = auth_model::try_auth(sanitizer($_POST['username']), sanitizer($_POST['password']));

  //If valid
  if($auth)
  {
    echo json_encode(other_model::some_function_that_returns_array());
    exit;
  }
  else
  {
    echo json_encode(array('error' => 'Authentication failed.'));
    exit;
  }
}

请注意,我完全组成了 auth_model、sanitizer 和 other_model,例如它们就在那里。

大多数语言/平台都有使用 json 的库,而且它是一种简单的格式,所以作为一个起点,我认为你会最轻松地使用它。

对于会话/状态,将您的会话存储在数据库表中,并仅将 id(以及其他任何不需要安全的内容)返回给客户端。

于 2012-07-09T23:20:11.733 回答