购物车功能网站怎么做的,房产信息网上自助查询系统,php第一季网站开发实例教程,dw可以做有后台的网站么?学习笔记#xff1a;防止SQL注入、XSS攻击和文件上传漏洞#xff08;Python3#xff09;
本笔记由生成式大模型GPT-4o自动整理。注意AI可能犯错。代码和理论由GPT-4o(2024-5-21)自行撰写未经人工复核。
参数化查询防SQL注入
参数化查询通过将SQL语句和数据分离来防止SQL注…学习笔记防止SQL注入、XSS攻击和文件上传漏洞Python3
本笔记由生成式大模型GPT-4o自动整理。注意AI可能犯错。代码和理论由GPT-4o(2024-5-21)自行撰写未经人工复核。
参数化查询防SQL注入
参数化查询通过将SQL语句和数据分离来防止SQL注入
import pymysqlconnection pymysql.connect(hostlocalhost, useruser, passwordpasswd, dbdb)
cursor connection.cursor()
username, password admin, password123sql SELECT * FROM users WHERE username%s AND password%s
cursor.execute(sql, (username, password))
result cursor.fetchall()防止XSS攻击的方法 输出编码在输出到网页时进行编码。 内容安全策略CSP使用CSP头限制浏览器执行或加载的内容。 Content-Security-Policy: default-src self;输入验证和清理严格验证和清理用户输入。 使用安全的库和框架例如使用Django。 设置HTTP头 X-XSS-Protection: 1; modeblock文件上传漏洞的解决方法Python3后端 文件类型验证 from werkzeug.utils import secure_filename
from flask import Flask, request, abortapp Flask(__name__)
app.config[UPLOAD_FOLDER] /path/to/upload
app.config[ALLOWED_EXTENSIONS] {png, jpg, jpeg, gif}def allowed_file(filename):return . in filename and filename.rsplit(., 1)[1].lower() in app.config[ALLOWED_EXTENSIONS]app.route(/upload, methods[POST])
def upload_file():if file not in request.files:abort(400, No file part)file request.files[file]if file.filename :abort(400, No selected file)if file and allowed_file(file.filename):filename secure_filename(file.filename)file.save(os.path.join(app.config[UPLOAD_FOLDER], filename))return File successfully uploadedelse:abort(400, File type not allowed)文件名安全处理 from werkzeug.utils import secure_filenamefilename secure_filename(file.filename)限制文件大小 app.config[MAX_CONTENT_LENGTH] 16 * 1024 * 1024 # 16MB存储位置和权限 import osUPLOAD_FOLDER /path/to/upload
if not os.path.exists(UPLOAD_FOLDER):os.makedirs(UPLOAD_FOLDER, exist_okTrue)
os.chmod(UPLOAD_FOLDER, 0o700)总结
通过参数化查询防止SQL注入使用输出编码、CSP、输入验证等技术防止XSS攻击并在Python3后端通过文件类型验证、文件名处理、限制文件大小等措施防止文件上传漏洞可以有效提高Web应用的安全性。