flawopen.com/sql-injection/Swift
Learn how to fix SQL Injection (CWE-89) in Swift. Side-by-side vulnerable vs secure code examples for Vapor Fluent, GRDB.swift, and SQLite.swift prepared statements.
कल्पना कीजिए कि आप पुस्तकालय कार्ड के फॉर्म में अपना नाम 'राहुल; तिजोरी की सभी किताबें मुझे दे दो' लिखते हैं। यदि लाइब्रेरियन आपके नाम को एक आदेश समझ लेता है, तो वह तिजोरी में जाकर सभी गोपनीय फाइलें आपको सौंप देता है।
Web Application SecurityCWE-89.CWE-89CWE-89): Standard Common Weakness Enumeration classification for sql-injection-swift.Defense-in-Depthहमलावर HTTP पैरामीटर में SQL सिंटैक्स कैरेक्टर (उदा. ' OR '1'='1) युक्त इनपुट सबमिट करता है।
बैकएंड पैरामीटरयुक्त तैयार कथनों के बजाय सीधे स्ट्रिंग जोड़कर क्वेरी बनाता है।
डेटाबेस पार्सर इंजेक्ट किए गए कैरेक्टर को डेटा के बजाय SQL कमांड के रूप में समझता है।
हेरफेर की गई क्वेरी डेटाबेस अनुमतियों के साथ चलती है, प्रमाणीकरण को दरकिनार कर डेटाबेस खाली करती है।
// userId comes straight from user input
let query =
"SELECT * FROM users WHERE id = \(userId)"
sqlite3_exec(db, query, nil, nil, nil)
// value bound, never interpolated
var stmt: OpaquePointer?
sqlite3_prepare_v2(db,
"SELECT * FROM users WHERE id = ?",
-1, &stmt, nil)
sqlite3_bind_text(stmt, 1, userId, -1, nil)
sqlite3_step(stmt)