我构建了一个简单的 Flask 应用程序,它接收 POST 请求并在接收到请求后执行一些操作。这是我的简单代码:
@app.route('/<user>/', methods=['POST'])
def Receiver(user):
Query = User.query.filter_by(token=user)
Content = request.data.decode('UTF-8')
Data = {'Content': Content, 'Username': Query.Username, 'UserID': Query.UserID}
return jsonify(Data)
我想让这段代码尽可能安全,但我才刚刚开始使用 Flask 和一般的安全性。我可以使用此代码运行哪些危险?我正在使用变量 user
对我的数据库进行查询,例如,如果将该变量设置为 SQL 查询是否有害?在这种情况下,我还应该考虑哪些其他威胁?
最佳答案
以下是我对您的问题的一些看法:
- 为什么这是 POST 请求而不是 GET 请求? POST requests are meant to change data , GET 用于查询。
- 您不验证输入数据。会发生什么,如果用户发送给你,例如一个 100kB 长的用户名?数据库将如何处理它?会对性能有影响吗?它会允许对服务器/数据库进行 DOS 攻击吗?
- 是的,还有 SQL 注入(inject)。关系数据库无处不在。
- 如果用户 ID 不存在怎么办?我们不应该返回 404 吗?
- 什么是真正的安全?什么是安全?这两个术语不可互换。安全是指代码不会危害世界。安全是指世界不损害代码。
- 需要考虑的因素有很多种,它们可能会影响您的代码安全性(意味着提供代码接触的数据的 secret 性、完整性和可访问性),这些因素与您的代码无关,例如:通信 channel 保护、服务器配置错误、DDOS攻击...即使您的代码是完美的,持有它的系统可能仍然不安全。
关于python - 保护 Flask 上的 POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63041009/