在Next.js应用程序中,可以通过使用Prisma / PostgreSQL数据库来保护应用程序免受SQL注入等安全漏洞的威胁。以下是如何实现此目标的一些技术解决方案和代码示例:
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
// Good: User input is passed as a parameter
const query = `SELECT * FROM users WHERE username = $1`;
const users = await prisma.$queryRaw(query, 'hacker123');
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
// Good: Prisma's query builder escapes and sanitizes the input
const users = await prisma.user.findMany({
where: {
username: 'hacker123',
},
});
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
// Bad: User input is interpolated directly into the SQL query
const username = 'hacker123';
const query = `SELECT * FROM users WHERE username = '${username}'`;
const users = await prisma.$queryRaw(query);
// Good: Using parameterized queries to safely pass user input to the database
const username = 'hacker123';
const query = `SELECT * FROM users WHERE username = $1`;
const users = await prisma.$queryRaw(query, username);
以上三种方法都可以用来提高Next.js应用程序的安全性,避免SQL注入等安全漏洞。