苗条的安全问题 restful api

Security concerns of a slim restful api

我正在学习这个精简教程:

https://www.shift8web.ca/blog/2015/04/use-php-to-set-up-a-restful-api-with-simple-authentication/

我只想从 java 应用程序的数据库中获取数据。本教程中提出的方法是否存在任何明显的安全问题?如果是这样,您将如何阻止 sql 注入和 DDos 攻击?

身份验证

该教程中的身份验证方法基本上没有错,许多系统工作就是这么简单。

但是,如果您的应用 运行 在许多不同的 java 客户端上运行,我会为每个设备单独生成一个访问令牌。

如果你想要一个完美的实现,请遵循OAuth2。但在大多数情况下,这将是一种矫枉过正。 (如果我错了请纠正我..)

SQL 注射

在本教程的示例中,没有为 SQL 查询字符串提供参数,因此没有 SQL 注入。

如果事情变得越来越复杂,我绝对不建议与那个可疑的人一起工作 lib/mysql.php class.

如果您不想实现一个库来处理您的数据库,请使用普通 PDO

在那里你可以使用准备好的语句来防止SQL注入:

$statement = $connection->prepare("select * from `users` where age = :age");
$statement->bindParam(':age', '42');

如果您是懒惰的人,您还可以使用查询生成器(如 Hydrahon or Pixie),它会自行处理准备好的语句。

$q->select('users')->where('age', 42)

DDos 攻击

如果你真的害怕DDos攻击,有很多解决办法。

如果您有非常繁重的查询,您可以使用 PHP 本身实现一个简单的速率限制器。

您也可以使用像 Cloudflare 这样的服务,它会自动阻止攻击。

如果您依赖内部解决方案,请购买支持速率限制的防火墙或使用 varnish 代理等。