防御式编程:防止 API 恶意调用

对用户输入进行严格的校验和处理是防止 API 恶意调用的重要手段。以下是改进后的代码示例:

from flask import Flask, request, jsonify 
import sqlite3  

app = Flask(__name__)  

@app.route('/user', methods=['GET']) 
def get_user():     
    user_id = request.args.get('id')          

    # 校验 user_id 是否为整数     
    if not user_id.isdigit():         
        return jsonify({"error": "Invalid user ID"}), 400          
        
    conn = sqlite3.connect('example.db')     
    cursor = conn.cursor()         

    # 使用参数化查询     
    query = "SELECT * FROM users WHERE id=?"     
    cursor.execute(query, (user_id,))     
    result = cursor.fetchone()     
    conn.close()     
    if result:         
        return jsonify(result)     
    else:         
        return jsonify({"error": "User not found"}), 404  
if __name__ == '__main__':     
    app.run(debug=True)

在这段代码中,首先对用户输入的 user_id 进行校验,确保它是一个整数。如果 user_id 不是整数,直接返回错误信息,阻止恶意调用。然后,使用参数化查询来执行 SQL 语句,确保用户输入的数据不会改变查询的逻辑。

好了,今天的文章分享就到这里了,希望对大家的学习和工作有所帮助~

 

你可能感兴趣的:(数据库)