mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-07 13:27:46 +00:00
removed logs & added pwndpasswords.com api to CSP
This commit is contained in:
+35
-13
@@ -24,7 +24,7 @@ import {
|
|||||||
secretSnapshot as eeSecretSnapshotRouter,
|
secretSnapshot as eeSecretSnapshotRouter,
|
||||||
users as eeUsersRouter,
|
users as eeUsersRouter,
|
||||||
workspace as eeWorkspaceRouter,
|
workspace as eeWorkspaceRouter,
|
||||||
secretScanning as v1SecretScanningRouter,
|
secretScanning as v1SecretScanningRouter
|
||||||
} from "./ee/routes/v1";
|
} from "./ee/routes/v1";
|
||||||
import {
|
import {
|
||||||
auth as v1AuthRouter,
|
auth as v1AuthRouter,
|
||||||
@@ -58,7 +58,7 @@ import {
|
|||||||
signup as v2SignupRouter,
|
signup as v2SignupRouter,
|
||||||
tags as v2TagsRouter,
|
tags as v2TagsRouter,
|
||||||
users as v2UsersRouter,
|
users as v2UsersRouter,
|
||||||
workspace as v2WorkspaceRouter,
|
workspace as v2WorkspaceRouter
|
||||||
} from "./routes/v2";
|
} from "./routes/v2";
|
||||||
import {
|
import {
|
||||||
auth as v3AuthRouter,
|
auth as v3AuthRouter,
|
||||||
@@ -70,14 +70,21 @@ import { healthCheck } from "./routes/status";
|
|||||||
import { getLogger } from "./utils/logger";
|
import { getLogger } from "./utils/logger";
|
||||||
import { RouteNotFoundError } from "./utils/errors";
|
import { RouteNotFoundError } from "./utils/errors";
|
||||||
import { requestErrorHandler } from "./middleware/requestErrorHandler";
|
import { requestErrorHandler } from "./middleware/requestErrorHandler";
|
||||||
import { getNodeEnv, getPort, getSecretScanningGitAppId, getSecretScanningPrivateKey, getSecretScanningWebhookProxy, getSecretScanningWebhookSecret, getSiteURL } from "./config";
|
import {
|
||||||
|
getNodeEnv,
|
||||||
|
getPort,
|
||||||
|
getSecretScanningGitAppId,
|
||||||
|
getSecretScanningPrivateKey,
|
||||||
|
getSecretScanningWebhookProxy,
|
||||||
|
getSecretScanningWebhookSecret,
|
||||||
|
getSiteURL
|
||||||
|
} from "./config";
|
||||||
import { setup } from "./utils/setup";
|
import { setup } from "./utils/setup";
|
||||||
import { syncSecretsToThirdPartyServices } from "./queues/integrations/syncSecretsToThirdPartyServices";
|
import { syncSecretsToThirdPartyServices } from "./queues/integrations/syncSecretsToThirdPartyServices";
|
||||||
import { githubPushEventSecretScan } from "./queues/secret-scanning/githubScanPushEvent";
|
import { githubPushEventSecretScan } from "./queues/secret-scanning/githubScanPushEvent";
|
||||||
const SmeeClient = require('smee-client') // eslint-disable-line
|
const SmeeClient = require("smee-client"); // eslint-disable-line
|
||||||
|
|
||||||
const main = async () => {
|
const main = async () => {
|
||||||
|
|
||||||
await setup();
|
await setup();
|
||||||
|
|
||||||
await EELicenseService.initGlobalFeatureSet();
|
await EELicenseService.initGlobalFeatureSet();
|
||||||
@@ -94,11 +101,15 @@ const main = async () => {
|
|||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
if (await getSecretScanningGitAppId() && await getSecretScanningWebhookSecret() && await getSecretScanningPrivateKey()) {
|
if (
|
||||||
|
(await getSecretScanningGitAppId()) &&
|
||||||
|
(await getSecretScanningWebhookSecret()) &&
|
||||||
|
(await getSecretScanningPrivateKey())
|
||||||
|
) {
|
||||||
const probot = new Probot({
|
const probot = new Probot({
|
||||||
appId: await getSecretScanningGitAppId(),
|
appId: await getSecretScanningGitAppId(),
|
||||||
privateKey: await getSecretScanningPrivateKey(),
|
privateKey: await getSecretScanningPrivateKey(),
|
||||||
secret: await getSecretScanningWebhookSecret(),
|
secret: await getSecretScanningWebhookSecret()
|
||||||
});
|
});
|
||||||
|
|
||||||
if ((await getNodeEnv()) != "production") {
|
if ((await getNodeEnv()) != "production") {
|
||||||
@@ -106,12 +117,14 @@ const main = async () => {
|
|||||||
source: await getSecretScanningWebhookProxy(),
|
source: await getSecretScanningWebhookProxy(),
|
||||||
target: "http://backend:4000/ss-webhook",
|
target: "http://backend:4000/ss-webhook",
|
||||||
logger: console
|
logger: console
|
||||||
})
|
});
|
||||||
|
|
||||||
smee.start()
|
smee.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
app.use(createNodeMiddleware(GithubSecretScanningService, { probot, webhooksPath: "/ss-webhook" })); // secret scanning webhook
|
app.use(
|
||||||
|
createNodeMiddleware(GithubSecretScanningService, { probot, webhooksPath: "/ss-webhook" })
|
||||||
|
); // secret scanning webhook
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((await getNodeEnv()) === "production") {
|
if ((await getNodeEnv()) === "production") {
|
||||||
@@ -119,7 +132,16 @@ const main = async () => {
|
|||||||
// in production
|
// in production
|
||||||
app.disable("x-powered-by");
|
app.disable("x-powered-by");
|
||||||
app.use(apiLimiter);
|
app.use(apiLimiter);
|
||||||
app.use(helmet());
|
app.use(
|
||||||
|
helmet.contentSecurityPolicy({
|
||||||
|
useDefaults: true,
|
||||||
|
directives: {
|
||||||
|
defaultSrc: ["'self'"],
|
||||||
|
imgSrc: ["*", "data:"],
|
||||||
|
connectSrc: ["'self'", "https://api.pwnedpasswords.com/range/"]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
app.use((req, res, next) => {
|
app.use((req, res, next) => {
|
||||||
@@ -207,8 +229,8 @@ const main = async () => {
|
|||||||
|
|
||||||
server.on("close", async () => {
|
server.on("close", async () => {
|
||||||
await DatabaseService.closeDatabase();
|
await DatabaseService.closeDatabase();
|
||||||
syncSecretsToThirdPartyServices.close()
|
syncSecretsToThirdPartyServices.close();
|
||||||
githubPushEventSecretScan.close()
|
githubPushEventSecretScan.close();
|
||||||
});
|
});
|
||||||
|
|
||||||
return server;
|
return server;
|
||||||
|
|||||||
@@ -1,28 +1,18 @@
|
|||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import crypto from "crypto"; // added types from @types/node
|
import crypto from "crypto"; // added types from @types/node
|
||||||
|
|
||||||
///// REMINDER: ensure all logs are deleted!!! /////
|
|
||||||
|
|
||||||
export const checkIsPasswordBreached = async (password: string) => {
|
export const checkIsPasswordBreached = async (password: string) => {
|
||||||
const dataBreachCheckAPIBaseURL = "https://api.pwnedpasswords.com/range/";
|
const dataBreachCheckAPIBaseURL = "https://api.pwnedpasswords.com/range/";
|
||||||
try {
|
try {
|
||||||
console.log("password:", password); // delete later!!!
|
|
||||||
|
|
||||||
const textEncoder = new TextEncoder();
|
const textEncoder = new TextEncoder();
|
||||||
|
|
||||||
const encodedPwd = textEncoder.encode(password);
|
const encodedPwd = textEncoder.encode(password);
|
||||||
console.log("encodedPwd:", encodedPwd); // delete later!!!
|
|
||||||
|
|
||||||
const hash = crypto.createHash("sha1").update(encodedPwd).digest();
|
const hash = crypto.createHash("sha1").update(encodedPwd).digest();
|
||||||
console.log("hash:", hash); // delete later!!!
|
|
||||||
|
|
||||||
const hashedPwd = Array.from(new Uint8Array(hash))
|
const hashedPwd = Array.from(new Uint8Array(hash))
|
||||||
.map((byte) => byte.toString(16).padStart(2, "0"))
|
.map((byte) => byte.toString(16).padStart(2, "0"))
|
||||||
.join("")
|
.join("")
|
||||||
.toUpperCase();
|
.toUpperCase();
|
||||||
|
|
||||||
console.log("hashedPwd:", hashedPwd); // delete later!!!
|
|
||||||
|
|
||||||
const response = await axios.get(`${dataBreachCheckAPIBaseURL}${hashedPwd.slice(0, 5)}`);
|
const response = await axios.get(`${dataBreachCheckAPIBaseURL}${hashedPwd.slice(0, 5)}`);
|
||||||
console.log("response:", response); // delete later!!!
|
console.log("response:", response); // delete later!!!
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user