
如何獲取免費的ChatGPT API密鑰 – Apidog
@app.route("/verifyOTP", methods=["POST"])
def verifyOTP():
received_code = request.data.code
correct_code = get_generated_code()
if received_code == correct_code:
log_user_in()
msg = "登錄成功"
return msg, 200
else:
msg = "驗證碼錯誤"
return msg, 403
問題分析:未限制用戶嘗試登錄的次數,攻擊者可以通過暴力破解自動化工具嘗試不同的密碼或驗證碼,直到成功為止。
@app.route("/verifyOTP", methods=["POST"])
def verifyOTP():
# 驗證 - 檢查用戶嘗試 verifyOTP 的次數
if has_available_attempts():
received_code = request.data.code
correct_code = get_generated_code()
if received_code == correct_code:
log_user_in()
msg = "登錄成功"
return msg, 200
else:
msg = "驗證碼錯誤。您只有5次嘗試"
has_available_attempts(-1)
return msg, 403
else:
msg = "錯誤請求過多。請一小時后重試"
return msg, 429
修復建議:
API 通常依賴前端執行數據過濾,但這種方式容易被繞過。攻擊者可以通過瀏覽器開發者工具直接查看完整的 API 響應。
修復建議:
@app.route("/image", methods=["POST"])
def upload_image():
image = request.data.image
if save(image) == True:
msg = "圖片上傳成功"
return msg, 200
else:
msg = "發生錯誤。請稍后再試"
return msg, 500
問題分析:攻擊者可以通過自動化工具持續上傳大圖片,耗盡服務器資源。
@app.route("/image", methods=["POST"])
def upload_image():
image = request.data.image
if can_upload():
if too_big(image.size):
msg = "圖片大小過大。請選擇其他文件"
return msg, 400
if save(image) == True:
msg = "圖片上傳成功"
return msg, 200
else:
msg = "發生錯誤。請稍后再試"
return msg, 500
else:
msg = "您已上傳過多圖片。請刪除一張以繼續。"
return msg, 400
修復建議:
@app.route("/user/", methods=["DELETE"])
def delete_user(userid):
if exists(userid):
# 執行不安全操作
delete(userid)
msg = "用戶刪除成功"
return msg, 200
else:
msg = "用戶不存在"
return msg, 404
問題分析:未驗證用戶權限,任何人都可以通過調用此端點刪除用戶。
@app.route("/user/", methods=["DELETE"])
def delete_user(userid):
if exists(userid):
logged_user = get_user_information()
# 驗證 - 只有管理員可以刪除用戶
if is_admin(logged_user):
delete(userid)
msg = "用戶刪除成功"
return msg, 200
else:
msg = "您無權執行此操作"
return msg, 403
else:
msg = "用戶不存在"
return msg, 404
修復建議:
通過本文,您已經了解了 OWASP API 安全十大風險中的部分關鍵問題及其修復方法。現在是時候評估您的 API 安全性并修補潛在漏洞了。安全開發不僅是技術能力的體現,更是對用戶和數據負責的表現。
敬請期待我們的第二部分內容,更多安全實踐即將揭曉!
原文鏈接: https://blog.vidocsecurity.com/blog/api-security-best-practices-for-developers/