
Research
Malicious fezbox npm Package Steals Browser Passwords from Cookies via Innovative QR Code Steganographic Technique
A malicious package uses a QR code as steganography in an innovative technique.
arcjet
Arcjet helps developers protect their apps in just a few lines of code. Implement rate limiting, bot protection, email verification, and defense against common attacks.
This is the Arcjet TypeScript and JavaScript SDK core.
Visit docs.arcjet.com to get started.
This is our core package.
It exposes the functionality for the many types of protection that Arcjet
provides which can be configured and combined by users.
The functionality here is exposed from our adapters (such as @arcjet/next
)
that each integrate with a particular framework.
We recommend using one of our runtime or framework specific packages rather than this one. See our [Get started guide][arcjet-get-started] for more info.
This package is ESM only. Install with npm in Node.js:
npm install arcjet
import http from "node:http";
import { readBody } from "@arcjet/body";
import arcjet, { ArcjetAllowDecision, ArcjetReason, shield } from "arcjet";
// Get your Arcjet key at <https://app.arcjet.com>.
// Set it as an environment variable instead of hard coding it.
const arcjetKey = process.env.ARCJET_KEY;
if (!arcjetKey) {
throw new Error("Cannot find `ARCJET_KEY` environment variable");
}
const aj = arcjet({
// Your adapter takes care of this: this is a naïve example.
client: {
async decide() {
return new ArcjetAllowDecision({
reason: new ArcjetReason(),
results: [],
ttl: 0,
});
},
report() {},
},
key: arcjetKey,
log: console,
rules: [
// Shield protects your app from common attacks.
// Use `DRY_RUN` instead of `LIVE` to only log.
shield({ mode: "LIVE" }),
],
});
const server = http.createServer(async function (
request: http.IncomingMessage,
response: http.ServerResponse,
) {
const url = new URL(request.url || "", "http://" + request.headers.host);
// Your adapter takes care of this: this is a naïve example.
const context = {
getBody() {
return readBody(request, { limit: 1024 });
},
host: request.headers.host,
ip: request.socket.remoteAddress,
method: request.method,
path: url.pathname,
};
const decision = await aj.protect(context, {});
console.log(decision);
if (decision.isDenied()) {
response.writeHead(403, { "Content-Type": "application/json" });
response.end(JSON.stringify({ message: "Forbidden" }));
return;
}
response.writeHead(200, { "Content-Type": "application/json" });
response.end(JSON.stringify({ message: "Hello world" }));
});
server.listen(8000);
Reference documentation is available at docs.arcjet.com.
FAQs
Arcjet TypeScript and JavaScript SDK core
The npm package arcjet receives a total of 15,303 weekly downloads. As such, arcjet popularity was classified as popular.
We found that arcjet demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 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
A malicious package uses a QR code as steganography in an innovative technique.
Research
/Security News
Socket identified 80 fake candidates targeting engineering roles, including suspected North Korean operators, exposing the new reality of hiring as a security function.
Application Security
/Research
/Security News
Socket detected multiple compromised CrowdStrike npm packages, continuing the "Shai-Hulud" supply chain attack that has now impacted nearly 500 packages.