Next.js, rangka kerja React yang popular, telah memperkenalkan Tindakan Pelayan dalam versi terbarunya, membenarkan pembangun mengendalikan logik sebelah pelayan secara langsung dalam komponen mereka. Ciri ini boleh menyelaraskan pembangunan dengan mengurangkan keperluan untuk laluan API yang berasingan. Walau bagaimanapun, seperti mana-mana ciri baharu, keselamatan adalah kebimbangan utama. Artikel ini meneroka implikasi keselamatan Tindakan Pelayan Next.js dan menyediakan amalan terbaik untuk memastikan ia kekal selamat.
Tindakan Pelayan dalam Next.js membolehkan anda menentukan fungsi bahagian pelayan dalam fail komponen anda. Fungsi ini boleh melaksanakan tugas seperti pengambilan data, pemprosesan dan manipulasi secara langsung pada pelayan, mengurangkan kerumitan seni bina aplikasi anda.
Contoh:
// app/page.js export async function getServerSideProps() { const data = await fetchDataFromAPI(); return { props: { data } }; } export default function Page({ data }) { return <div>{JSON.stringify(data)}</div>; }
Dalam contoh ini, getServerSideProps ialah Tindakan Pelayan yang mengambil data daripada API dan menghantarnya kepada komponen sebagai prop.
Mitigasi:
Mitigasi:
Mitigasi:
Contoh:
import { getSession } from 'next-auth/react'; export async function getServerSideProps(context) { const session = await getSession(context); if (!session) { return { redirect: { destination: '/login', permanent: false, }, }; } const data = await fetchDataForUser(session.user.id); return { props: { data } }; }
Mitigasi:
Mitigasi:
Mitigasi:
import { sanitize } from 'some-sanitization-library'; export async function getServerSideProps(context) { const userInput = sanitize(context.query.input); // Proceed with sanitized input }
export async function getServerSideProps() { const apiKey = process.env.API_KEY; const data = await fetchDataFromAPI(apiKey); return { props: { data } }; }
import { getSession } from 'next-auth/react'; export async function getServerSideProps(context) { const session = await getSession(context); if (!session) { return { redirect: { destination: '/login', permanent: false, }, }; } const data = await fetchDataForUser(session.user.id); return { props: { data } }; }
export async function getServerSideProps(context) { const session = await getSession(context); if (!session || !session.user.isAdmin) { return { redirect: { destination: '/unauthorized', permanent: false, }, }; } const data = await fetchAdminData(); return { props: { data } }; }
export async function getServerSideProps(context) { console.log('Request received:', context.req.headers); const data = await fetchData(); return { props: { data } }; }
// middleware.js export function middleware(req, res, next) { // Authentication and authorization checks next(); }
// app/page.js import { middleware } from './middleware'; export async function getServerSideProps(context) { await middleware(context.req, context.res); const data = await fetchData(); return { props: { data } }; }
Tindakan Pelayan Next.js menawarkan cara yang berkuasa untuk mengendalikan logik sebelah pelayan terus dalam komponen anda. Walau bagaimanapun, seperti mana-mana ciri sisi pelayan, ia datang dengan pertimbangan keselamatan. Dengan mengikuti amalan terbaik seperti pembersihan input, pengesahan, pengehadan kadar dan perlindungan CSRF, anda boleh memastikan Tindakan Pelayan anda selamat dan teguh.
Melaksanakan amalan ini akan membantu melindungi aplikasi anda daripada ancaman keselamatan biasa dan memberikan pengalaman yang lebih selamat untuk pengguna anda.
Atas ialah kandungan terperinci Adakah Tindakan Pelayan Next.js Selamat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!