苗条的安全问题 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 代理等。
我正在学习这个精简教程:
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 代理等。