Use Safe Redirect Helpers
Protect user-driven redirects with safeRedirect and prefer redirectBack for post actions.
Pattern
import { redirect } from "react-router";
import { safeRedirect } from "remix-utils/safe-redirect";
export async function loader({ request }: Route.LoaderArgs) {
let url = new URL(request.url);
let redirectTo = url.searchParams.get("redirectTo");
return redirect(safeRedirect(redirectTo, "/"));
}import { redirectBack } from "remix-utils/redirect-back";
export async function action({ request }: Route.ActionArgs) {
throw redirectBack(request, { fallback: "/" });
}Rules
- Never redirect to raw user input
- Use
safeRedirectfor query-based redirects - Use
redirectBackfor post/put/delete actions