2017-09-25 13 views
0

다음과 같이 laravel 쿼리 작성기의 쿼리 작성기에서 원시 쿼리를 사용하는 경우를 알고 싶습니다.원시 쿼리는 쿼리 빌더 내에서 laravel 쿼리 빌더를 사용하여 SQL 주입에 대해 보안을 설정할 수 있습니까?

$salesdata = DB::table('HEADER') 
       ->join('BRANCH', 'HEADER.BRANCHCODE', '=', 'BRANCH.BRANCHCODE') 
       ->select('HEADER.BRANCHCODE','BRANCH.BRANCHNAME', 
        DB::raw('SUM("HEADER"."AMT") as netamt'), 
        DB::raw('SUM("HEADER"."AMT") + SUM("HEADER"."DISCOUNT")- SUM("HEADER"."TAX1")- SUM("T_CASH_HEADER"."TAX2") as grossamt'),'BRANCH.BRANCHNAME', 
        DB::raw('SUM("HEADER"."COVER") as NetCover'), 
        DB::raw('SUM("HEADER"."DISCOUNT") as discount'),DB::raw('SUM("HEADER"."TAX1") as tax'),DB::raw('round(SUM("HEADER"."AMT")/SUM("HEADER"."COVER"),2) as avg')) 
       ->whereBetween('HEADER.INVOICEDATE', [$fromDate, $toDate]) 
       ->groupBy('BRANCH.BRANCHCODE','BRANCH.BRANCHNAME','HEADER.BRANCHCODE') 
       ->orderBy('AMT','ASC') 
       ->get(); 

위의 쿼리를 알고 싶습니다. lqlvel을 사용하여 SQL 주입을 수행 할 수 있습니다.

+0

당신은 laravel 소스 코드를보고 당신이 그것을주는 변수로 무엇을하는지 알아야 할 것입니다. 바라기를 매개 변수로 설정하십시오. – ADyson

답변

1

아니요, ->whereBetween('HEADER.INVOICEDATE', [$fromDate, $toDate]) 문을 제외하고는 사용자 입력을 사용자 정의 문으로 전달하지 않았으며 SQL 삽입을 방지하기 위해 PDO 매개 변수 바인딩을 사용합니다. 그래서, 그것은 안전합니다!

+0

그리고 그는 또한 DateTime 클래스를 사용하여 문자열을 미리 검증 할 경우 입력이 안전하다는 것을 확실히 알 수 있습니다 – delboy1978uk

+0

xo much much .. –