我正在关注这个苗条的教程:
https://www.shift8web.ca/blog/2015/04/use-php-to-set-up-a-restful-api-with-simple-authentication/
我只想从数据库中获取Java应用程序的数据。本教程中提出的方法是否存在明显的安全问题?如果是这样,您将如何停止SQL注入和DDos攻击?
答案 0 :(得分:0)
在该教程中,认证方法基本上没有任何问题,许多系统的工作就像那样简单。
但是如果您的应用程序在许多不同的Java客户端上运行,我会为每个设备单独生成一个访问令牌。
如果您想要完美的实施,请遵循OAuth2。但在大多数情况下,这将是一种过度杀伤力。 (纠正我,如果我错了..)
在本教程的示例中,没有为SQL查询字符串提供参数,因此没有SQL注入。
如果事情变得越来越复杂,我绝对不建议使用那个可疑的lib/mysql.php
课程。
如果您不想实现库以使用数据库,请使用普通PDO。
在那里你可以使用预准备语句来阻止SQL注入:
$statement = $connection->prepare("select * from `users` where age = :age");
$statement->bindParam(':age', '42');
如果你是懒惰的,你也可以使用一个查询构建器(如Hydrahon或Pixie),它将自己处理准备好的语句。
$q->select('users')->where('age', 42)
如果你真的害怕DDos攻击,有很多解决方案。
如果您的查询非常繁重,可以使用PHP本身实现一个简单的速率限制器。
您还可以使用Cloudflare之类的服务来自动阻止攻击。
如果您依赖内部解决方案,请购买支持速率限制的防火墙或使用varnish代理。