stripe-escape-input

1.0.2 • Public • Published

Stripe Escape Input

Prevent injections in Stripe search queries by escaping user input.

Problem

const stripe = require("stripe")(process.env.STRIPE_SECRET_KEY)

const userInput = "124' OR created>0 OR status:'active"

let subscriptions = await stripe.subscriptions.search({
    query: `metadata['myField']: '${userInput}'`
})
console.log(subscriptions) // all subscriptions ever due to injection

A user input that is directly used in a Stripe search query is vulnerable to injections. This can be exploited to gain access to all records. The principle is basically the same as in SQL injections.

Solution

To prevent injections, we need to escape the user input before using it in a Stripe search query.

npm i stripe-escape-input
const escapeInput = require("stripe-escape-input")
const stripe = require("stripe")(process.env.STRIPE_SECRET_KEY)

const userInput = "124' OR created>0 OR status:'active"

let subscriptions = await stripe.subscriptions.search({
    query: `metadata['myField']: '${escapeInput(userInput)}'`
})
console.log(subscriptions) // 0 subscriptions

Sources

Package Sidebar

Install

npm i stripe-escape-input

Weekly Downloads

1

Version

1.0.2

License

MIT

Unpacked Size

3.49 kB

Total Files

5

Last publish

Collaborators

  • soerenmetje