@@ -150,6 +150,44 @@ def init_database():
150150 notes TEXT
151151 )
152152 ''' )
153+
154+ # 创建优惠券表(用于 Base64 加密参数 SQL 注入演示)
155+ cursor .execute ('''
156+ CREATE TABLE IF NOT EXISTS coupons (
157+ id INTEGER PRIMARY KEY AUTOINCREMENT,
158+ coupon_code TEXT NOT NULL UNIQUE,
159+ discount_type TEXT DEFAULT 'percent',
160+ discount_value REAL NOT NULL,
161+ min_purchase REAL DEFAULT 0,
162+ max_discount REAL,
163+ category TEXT,
164+ status TEXT DEFAULT 'active',
165+ valid_from TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
166+ valid_until TIMESTAMP,
167+ usage_limit INTEGER DEFAULT 100,
168+ used_count INTEGER DEFAULT 0,
169+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
170+ )
171+ ''' )
172+
173+ # 创建用户评价表
174+ cursor .execute ('''
175+ CREATE TABLE IF NOT EXISTS reviews (
176+ id INTEGER PRIMARY KEY AUTOINCREMENT,
177+ user_id INTEGER NOT NULL,
178+ product_id INTEGER NOT NULL,
179+ order_id INTEGER,
180+ rating INTEGER NOT NULL CHECK(rating >= 1 AND rating <= 5),
181+ title TEXT,
182+ content TEXT,
183+ is_anonymous INTEGER DEFAULT 0,
184+ helpful_count INTEGER DEFAULT 0,
185+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
186+ FOREIGN KEY (user_id) REFERENCES users(id),
187+ FOREIGN KEY (product_id) REFERENCES products(id),
188+ FOREIGN KEY (order_id) REFERENCES orders(id)
189+ )
190+ ''' )
153191
154192 # 插入测试用户
155193 test_users = [
@@ -245,6 +283,43 @@ def init_database():
245283 except :
246284 pass
247285
286+ # 插入优惠券测试数据(用于 Base64 加密参数 SQL 注入演示)
287+ test_coupons = [
288+ ('SAVE10' , 'percent' , 10.0 , 100.0 , 50.0 , 'electronics' , 'active' ),
289+ ('NEWUSER20' , 'percent' , 20.0 , 0 , 100.0 , None , 'active' ),
290+ ('FLASH50' , 'fixed' , 50.0 , 200.0 , 50.0 , 'fashion' , 'active' ),
291+ ('VIP30' , 'percent' , 30.0 , 500.0 , 200.0 , None , 'active' ),
292+ ('BOOKS15' , 'percent' , 15.0 , 50.0 , 30.0 , 'books' , 'active' ),
293+ ('EXPIRED99' , 'percent' , 99.0 , 0 , 999.0 , None , 'expired' ),
294+ ]
295+
296+ for coupon in test_coupons :
297+ try :
298+ cursor .execute ('''
299+ INSERT INTO coupons (coupon_code, discount_type, discount_value, min_purchase, max_discount, category, status)
300+ VALUES (?, ?, ?, ?, ?, ?, ?)
301+ ''' , coupon )
302+ except :
303+ pass
304+
305+ # 插入评价测试数据
306+ test_reviews = [
307+ (2 , 1 , 1 , 5 , '非常满意' , 'iPhone 15 Pro 手感超级好,性能强劲!' , 0 , 15 ),
308+ (3 , 2 , 3 , 4 , '工作利器' , 'MacBook Pro 屏幕素质极佳,适合设计工作' , 0 , 8 ),
309+ (4 , 5 , 4 , 5 , '经典之作' , 'Levi\' s 质量一如既往的好' , 0 , 23 ),
310+ (2 , 3 , 2 , 5 , '降噪效果好' , 'AirPods Pro 降噪效果超出预期' , 0 , 45 ),
311+ (3 , 6 , 5 , 4 , '入门必读' , 'Python书籍内容详实,适合初学者' , 0 , 12 ),
312+ ]
313+
314+ for review in test_reviews :
315+ try :
316+ cursor .execute ('''
317+ INSERT INTO reviews (user_id, product_id, order_id, rating, title, content, is_anonymous, helpful_count)
318+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
319+ ''' , review )
320+ except :
321+ pass
322+
248323 conn .commit ()
249324 conn .close ()
250325 print ("[*] Database initialized with test data" )
0 commit comments