一个苗条的宁静api的安全问题

时间:2016-02-25 09:57:27

标签: php rest sql-injection slim

我正在关注这个苗条的教程:

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

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

1 个答案:

答案 0 :(得分:0)

验证

在该教程中,认证方法基本上没有任何问题,许多系统的工作就像那样简单。

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

如果您想要完美的实施,请遵循OAuth2。但在大多数情况下,这将是一种过度杀伤力。 (纠正我,如果我错了..)

SQL注入

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

如果事情变得越来越复杂,我绝对不建议使用那个可疑的lib/mysql.php课程。

如果您不想实现库以使用数据库,请使用普通PDO

在那里你可以使用预准备语句来阻止SQL注入:

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

如果你是懒惰的,你也可以使用一个查询构建器(如HydrahonPixie),它将自己处理准备好的语句。

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

DDos攻击

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

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

您还可以使用Cloudflare之类的服务来自动阻止攻击。

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