FlawOpen

flawopen.com/JavaScript में SQL Injection/Sequelize

क्या Sequelize query() SQL Injection से सुरक्षित है?

संदर्भ मार्गदर्शिका
संक्षिप्त उत्तर

Query parameter सीलबंद मान-कार्ड जैसा है: SQL को मान query निर्देशों से अलग मिलता है। Sequelize v6 में bind मान अलग भेजता है; replacements भेजने से पहले मान को escape करके जोड़ता है। अविश्वसनीय input से query string बनाने पर दोनों उपाय bypass हो जाते हैं। कोई भी table या column name का विकल्प नहीं है।

असुरक्षित — input को SQL में जोड़ना
sequelize.query(
  `SELECT * FROM users WHERE id = ${userId}`
)
सुरक्षित — मान अलग से bind करें
sequelize.query(
  "SELECT id FROM users WHERE id = $id",
  { bind: { id: userId },
    type: QueryTypes.SELECT }
)

मानों को SQL syntax से अलग रखें

Sequelize v6 में replacements को Sequelize डेटाबेस तक पहुँचने से पहले escape करके जोड़ता है; bind मानों को SQL text से अलग भेजता है। दोनों user values जोड़ने से बचाते हैं, लेकिन syntax method और dialect के अनुसार बदलती है। Parameters table names, column names, sort direction या मनमाने SQL fragments नहीं हो सकते। चुनी जाने वाली संरचना को application की fixed allowlist से map करें। Model methods सामान्य structured मान संभाल सकते हैं, लेकिन raw SQL और literal expressions की भी जाँच करें।

Sequelize query निर्माण की जाँच

rg -n 'sequelize\.query\(|Sequelize\.literal\(' --glob '*.{js,ts,mjs,cjs}' .

अक्सर पूछे जाने वाले प्रश्न

क्या Sequelize model methods हमेशा SQL Injection से सुरक्षित हैं?

सामान्य structured values को Sequelize query construction संभालता है। फिर भी raw SQL, literal expressions और application द्वारा बनाई गई strings जाँचें। Parameterization रिकॉर्ड तक पहुँच की अनुमति या business rules का सत्यापन नहीं करता।

स्रोत

यह भी देखें SQL इंजेक्शन (CWE-89): यह कैसे काम करता है और हर भाषा में इसे कैसे रोकें — flawopen.com क्या SQLAlchemy text() SQL Injection से सुरक्षित है? क्या sqlx की compile-time query जाँच SQL injection रोकती है? क्या stored procedures SQL injection से सुरक्षित हैं? क्या TypeORM QueryBuilder SQL Injection से सुरक्षित है? Django ORM और SQL Injection: सुरक्षित तरीके Doctrine ORM में SQL Injection: सुरक्षित queries