浅谈:前端数据风险之API恶意调用

张开发
2026/4/12 18:17:02 15 分钟阅读

分享文章

浅谈:前端数据风险之API恶意调用
这种“恶意调用”是实现 SQL 注入攻击的一种常见途径它展示了攻击者如何通过 URL 参数发起攻击。再来看一个例子假设有一个用户信息查询接口前端会发送一个用户 ID 到后端后端根据用户 ID 查询用户信息并返回。后端代码如下未采用防御式编程from flask import Flask, request, jsonify i mport sqlite3 app Flask(__name__) app.route(/user, methods[GET]) def get_user(): user_id request.args.get(id) conn sqlite3.connect(example.db) cursor conn.cursor() query fSELECT * FROM users WHERE id{user_id} cursor.execute(query) result cursor.fetchone() conn.close() if result: return jsonify(result) else: return jsonify({error: User not found}), 404 if __name__ __main__: app.run(debugTrue)在这个例子中后端代码直接将用户输入的 user_id 拼接到 SQL 查询语句中没有进行任何校验或处理。这使得该接口容易受到 SQL 注入攻击。恶意调用示例假设攻击者通过浏览器或其他工具向该接口发送以下请求GET /user?id1 OR 11生成的 SQL 查询语句将是SELECT * FROM users WHERE id1 OR 11由于 11 永远为真这条查询语句会返回所有用户的信息而不是只返回 ID 为 1 的用户信息。攻击者可以利用这种方式获取数据库中所有用户的信息造成严重的安全问题。由此可见前端传来的数据并非绝对可靠。对于后端来说这些数据就像未经筛选的原材料其中可能夹杂着各种风险。因此后端必须对前端传来的数据进行二次校验这正是防御式编程的核心思想。

更多文章