Skip to content

Commit e960a23

Browse files
authored
🐛 fix: try to implement better ssrf-protect (#4044)
* 🐛 fix: try to implement better ssrf-protect * 🐛 fix: fix error * 💄 style: improve pwa
1 parent 4e3b71b commit e960a23

File tree

6 files changed

+24
-38
lines changed

6 files changed

+24
-38
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,7 @@
203203
"remark": "^14.0.3",
204204
"remark-gfm": "^3.0.1",
205205
"remark-html": "^15.0.2",
206+
"request-filtering-agent": "^2.0.1",
206207
"resolve-accept-language": "^3.1.5",
207208
"rtl-detect": "^1.1.2",
208209
"semver": "^7.6.3",

src/app/api/proxy/route.ts

Lines changed: 0 additions & 34 deletions
This file was deleted.

src/app/webapi/proxy/route.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { NextResponse } from 'next/server';
2+
import fetch from 'node-fetch';
3+
import { useAgent as ssrfAgent } from 'request-filtering-agent';
4+
5+
/**
6+
* just for a proxy
7+
*/
8+
export const POST = async (req: Request) => {
9+
const url = await req.text();
10+
11+
try {
12+
const res = await fetch(url, { agent: ssrfAgent(url) });
13+
14+
return new Response(await res.arrayBuffer(), { headers: { ...res.headers } });
15+
} catch (err) {
16+
console.error(err); // DNS lookup 127.0.0.1(family:4, host:127.0.0.1.nip.io) is not allowed. Because, It is private IP address.
17+
return NextResponse.json({ error: 'Not support internal host proxy' }, { status: 400 });
18+
}
19+
};

src/server/routers/lambda/user.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ export const userRouter = router({
6363
const sessionCount = await sessionModel.count();
6464

6565
return {
66-
canEnablePWAGuide: messageCount >= 2,
66+
canEnablePWAGuide: messageCount >= 4,
6767
canEnableTrace: messageCount >= 4,
6868
// 有消息,或者创建过助手,则认为有 conversation
6969
hasConversation: messageCount > 0 || sessionCount > 1,

src/services/_url.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// TODO: 未来路由需要迁移到 trpc or /webapi
1+
// TODO: 未来所有核心路由需要迁移到 trpc,部分不需要迁移的则走 webapi
22

33
/* eslint-disable sort-keys-fix/sort-keys-fix */
44
import { transform } from 'lodash-es';
@@ -17,7 +17,7 @@ const mapWithBasePath = <T extends object>(apis: T): T => {
1717
};
1818

1919
export const API_ENDPOINTS = mapWithBasePath({
20-
proxy: '/api/proxy',
20+
proxy: '/webapi/proxy',
2121
oauth: '/api/auth',
2222

2323
// agent markets

src/services/user/client.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export class ClientService implements IUserService {
2323

2424
return {
2525
avatar: user.avatar,
26-
canEnablePWAGuide: messageCount >= 2,
26+
canEnablePWAGuide: messageCount >= 4,
2727
canEnableTrace: messageCount >= 4,
2828
hasConversation: messageCount > 0 || sessionCount > 0,
2929
isOnboard: true,

0 commit comments

Comments
 (0)