Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
req-valida
Advanced tools
A strict express request validator middleware, used for ensuring the payload meets the requirement of an endpoint.
Whether amount
is required in request.body
or customerID
in request.params
, req-valida
can handle everything. As a strict validator, req-valida
throws error for any field present in request that is not expected for an endpoint.
valida is a Romanian verb, which means validate in English language.
req-valida
enables the strict type-checking for request payloads even in Javascript projects. With the extra validation available via the rules
(see bellow in data
section), req-valida
can be a single tool for all sorts of payload validation.
npm install req-valida
or
yarn add req-valida
For cjs
,
const { validate } = require("req-valida");
For esm
,
import { validate } from "req-valida";
validate
method takes an object of which looks like,
// regex is required here to be used in rules
{
location: "body",
data: {
amount: {
rules: ["number", regex.number],
},
customerID: {
rules: ["string"],
isOptional: true,
},
},
}
location
location
can be body
| query
| params
. The validate
method will use location
to look for required data
on each invocation.
data
data
object should be defined as how the payload is expected for that endpoint. However, each key in data
object must have rules
array. First element on rules
array is the expected type of the key (in string format). Such as, in above example, amount
is required in the body of some endpoint, and amount
must be a number
.
Second element on the rules
array is optional RegEx validation. If provided, validate
will test
the value of the amount
against the RegEx string.
isOptional
After that, there's another optional property isOptional
which can be sent with the each fields. Such as, in above example, customerID
is optional in that request, so isOptional
is sent true
.
There can be case where every field in request is optional, in that case, instead of sending isOptional
with the fields, validate
allows another property outside of data
called isOptional
(similar to the fields) for these situation. It will tell validate
to consider the whole data
object to be optional.
An example router with validate
from req-valida
,
// necessary and required lines here
paymentRouter.post(
"/intent",
validate({
location: "body",
data: {
amount: {
rules: ["number", regex.number],
},
customerID: {
rules: ["string"],
isOptional: true,
},
},
}),
(request, response, next) => Payment.Intent.create(request, response, next)
);
// necessary and required lines here
validate
should be used used on the same endpoint for separate concerns. For example, an endpoint might have something in the request.params
and something in request.body
, then it will look like,
// necessary and required lines here
customerRouter.put(
"/:customerID",
validate({
location: "params",
data: {
customerID: {
rules: ["string"],
},
},
}),
validate({
location: "body",
data: {
name: {
rules: ["string"],
},
email: {
rules: ["string", regex.email],
},
phone: {
rules: ["string", regex.phone],
},
},
isOptional: true,
}),
(request, response, next) => Customer.update(request, response, next)
);
// necessary and required lines here
While this is being used in some projects, req-valida
has to improve a lot. A few things like unit-test, changelog, contributing guide, and a better README etc. needs to be added.
Even discussing about the req-valida
in the GitHub repository's discussion is a form of contribution.
All contributions are welcomed. Interested parties are requested to follow the general procedure until the steps are explicitly mentioned here.
FAQs
A strict request validate middleware intended for ExpressJS.
We found that req-valida demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers 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 malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.