Incorrect Type Conversion or Cast
The product does not correctly convert an object, resource, or structure from one type to a different type.
Type conversions often have implications for resource and bounds checking. When types are not converted properly, this can lead to access of out-of-bounds memory or misinterpretation of data.
इस भेद्यता को कैसे ठीक करें
5 Shoulder डिटेक्शन नियमों पर आधारित Incorrect Type Conversion के लिए रोकथाम रणनीतियाँ।
Use Zod schemas with type inference instead of 'any' to maintain end-to-end type safety in tRPC
import { router, publicProcedure } from './trpc'; - - export const postRouter = router({ - createPost: publicProcedure - .mutation(async ({ input }: { input: any }) => { - return await db.post.create({ data: input }); - }), - - getPost: publicProcedure - .query(async ({ input }: any) => { + import { z } from 'zod'; + + const createPostInput = z.object({ + title: z.string().min(1).max(200), + content: z.string().min(1), + published: z.boolean().default(false), + }); + + export const postRouter = router({ + createPost: publicProcedure + .input(createPostInput) + .mutation(async ({ input }) => { + // input is typed as { title: string; content: string; published: boolean } + return await db.post.create({ data: input }); + }), + + getPost: publicProcedure + .input(z.object({ postId: z.number().int().positive() })) + .query(async ({ input }) => { return await db.post.findUnique({ where: { id: input.postId }, }); }), });
Add type constraints using 'extends' to ensure generic parameters have required properties
- function getIdentifier<T>(entity: T): string { - return entity.id.toString(); // T has no guaranteed 'id' property - } - - function processEntities<T>(items: T[]): void { - items.forEach(item => { - console.log(item.name); // Runtime error if 'name' missing + interface Identifiable { + id: number | string; + } + + interface Named { + name: string; + } + + function getIdentifier<T extends Identifiable>(entity: T): string { + return entity.id.toString(); + } + + function processEntities<T extends Named>(items: T[]): void { + items.forEach(item => { + console.log(item.name); }); }
Enable strict mode in tsconfig.json to activate all strict type-checking options
{ "compilerOptions": { "target": "ES2020", "module": "commonjs", - "strict": false, - "strictNullChecks": false, - "noImplicitAny": false + "strict": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true } }
अपने कोड में भेद्यताएँ खोजें
Incorrect Type Conversion or Cast पैटर्न के लिए अपने कोडबेस को स्कैन करने के लिए Shoulder का उपयोग करें। 5 नियम.
# Scan with Shoulder CLI npx @shoulderdev/cli trust --cwe=704 # Or scan entire project npx @shoulderdev/cli trust .
पहचान नियम (5)
कोड समीक्षा में किन बातों पर ध्यान दें
ये पैटर्न संभावित Incorrect Type Conversion or Cast भेद्यताओं का संकेत देते हैं। कोड समीक्षा और सुरक्षा ऑडिट के दौरान इन्हें देखें।
अपने कोडबेस को इसके लिए स्कैन करें: Incorrect Type Conversion or Cast
Shoulder CLI आपके पूरे कोडबेस में भेद्य पैटर्न खोजता है।