2016-07-31 7 views
0

요청 개체에서 매개 변수를 가져 오는 것에 대한 질문이 있습니다.요청의 매개 변수 액세스

$name = $request->name; 

OR

$name = $request->input("name") 차이가 무엇

;

이들은 동일한 동작을 보여줍니다. 저는 타이핑 관점에서 # 1 방법을 이용하는 것이 더 빠르다고 요청합니다. 그러나 나는 그 차이를 모른다. # 1은 SQL 인젝션에 취약합니까?

답변

2

기본적으로 첫 번째 경우는 두 번째 경우의 구문 설탕입니다. Laravel에서 Request는 내부 속성에 액세스하기 위해 __get magic 함수를 구현합니다.

public function all() 
{ 
    return array_replace_recursive($this->input(), $this->allFiles()); 
} 

public function __get($key) 
{ 
    $all = $this->all(); 

    if (array_key_exists($key, $all)) { 
     return $all[$key]; 
    } else { 
     return $this->route($key); 
    } 
} 

첫 번째 경우 파일이 업로드 된 경우 Laravel은 먼저 해당 파일 중 속성을 찾습니다. 파일이나 입력에 이러한 매개 변수가없는 경우 Laravel은 경로 매개 변수 중에서 값을 찾습니다.

SQL 주입에 대한 코드를 보호하려면 준비된 문/쿼리 작성기/ORM. 이스케이프/변경 입력을해서는 안되기 때문에 두 가지 기능 모두 SQL 인젝션으로부터 사용자를 보호하지 못합니다.

관련 문제