Research
Security News
Threat Actor Exposes Playbook for Exploiting npm to Build Blockchain-Powered Botnets
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.
strong-params
Advanced tools
Rails-style strong parameters for javascript projects. (e.g. Express, Koa)
Rails-style implementation of strong parameters. It supports Express, Koa and also can be used as standalone. The middleware adds the parameters
object to the Express request (or ctx.parameters
for Koa context) which returns an object, built from query string
, request body
and route params
data. The returned object has some useful methods allows for data requiring
and filtering
.
The implementation of strong parameters was previously forked from koa-strong-params but now has it's own implementation. Along with this change only
, except
and merge
methods have been dropped from the API as they do not exist in Rails Strong Parameters API.
Install the npm package.
npm install strong-params --save
var express = require('express')
var params = require('strong-params')
app.use(params.expressMiddleware())
var koa = require('koa')
var params = require('strong-params')
var app = new koa()
app.use(params.koaMiddleware())
app.use(function (req, res, next) {
var params = req.parameters
})
app.use(function (ctx, next) {
var params = ctx.parameters
})
var Parameters = require('strong-params').Parameters
var params = Parameters({
id: '13',
name: 'Bob',
age: '13',
hobbies: ['skydiving', 'football', 'photographing'],
address: {
country: 'US',
street: '261 West'
},
contacts: [
{
type: 'e-mail',
value: 'bob@random.rnd'
}, {
type: 'mobile',
value: '+123987456'
}
]
})
// All available params
params.all()
// -> { id: '13', name: 'Bob', age: '13', hobbies: ['skydiving', 'football', 'photographing'], address: { country: 'US', street: '261 West' }, contacts: [{ type: 'e-mail', value: 'bob@random.rnd' }, { type: 'mobile', value: '+123987456' }] }
// Only selected params
params.permit('name', 'age').value()
// -> { name: 'Bob', age: '13' }
params.permit('id', 'name', {hobbies: []}).value()
// -> { id: '13', name: 'Bob', hobbies: ['skydiving', 'football', 'photographing'] }
params.permit('id', 'name', {contacts: []}).value()
// -> { id: '13', name: 'Bob', contacts: [] }
params.permit('id', 'name', {contacts: ['type', 'value']}).value()
// -> { id: '13', name: 'Bob', contacts: [{ type: 'e-mail', value: 'bob@random.rnd' }, { type: 'mobile', value: '+123987456' }] }
// All params of a sub-object
params.require('address').all()
// -> { country: 'US', street: '261 West' }
// All params of a sub-object
params.require('contacts').permit('type', 'value').value()
// -> [{ type: 'e-mail', value: 'bob@random.rnd' }, { type: 'mobile', value: '+123987456' }]
// ParameterMissingError
try {
params.require('missingKey')
} catch(err) {
err instanceof ParameterMissingError // -> true
err instanceof Error // -> true
}
Look Rails Strong Parameters specification for more information.
Please follow Contributing
FAQs
Rails-style strong parameters for javascript projects. (e.g. Express, Koa)
We found that strong-params demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.
Security News
NVD’s backlog surpasses 20,000 CVEs as analysis slows and NIST announces new system updates to address ongoing delays.
Security News
Research
A malicious npm package disguised as a WhatsApp client is exploiting authentication flows with a remote kill switch to exfiltrate data and destroy files.