빌드는 SQL 인젝션으로부터 보호합니까?레일 : 빌드 방법으로 SQL 인젝션을 방지 할 수 있습니까?
예 :
@post = @user.posts.build(params[:post])
@post.save
레일 보안 문서에 구축 보지 않았다.
감사합니다.
빌드는 SQL 인젝션으로부터 보호합니까?레일 : 빌드 방법으로 SQL 인젝션을 방지 할 수 있습니까?
예 :
@post = @user.posts.build(params[:post])
@post.save
레일 보안 문서에 구축 보지 않았다.
감사합니다.
build
자체는 데이터베이스에 아무 것도 쓰지 않으므로 SQL 주입이 적용되지 않습니다. save
을 호출 할 때 개체가 build
을 통해 만들었거나 new
에 특성을 전달하거나 개별 attribute=
메서드를 사용하는 것과 같은 다른 메커니즘을 통해 개체가 생성되었는지 여부는 중요하지 않으며 개체를 데이터베이스에 저장하는 데 동일한 코드가 사용됩니다. documentation on build에서
:
조인 테이블을 통해이 객체 에 속성을 인스턴스화와 연결되어 있습니다 컬렉션 유형의 새 오브젝트를 돌려줍니다 만, 아직 저장되지 않았습니다.
save
방법은 결과 insert
또는 create
쿼리는 SQL 주입에 감염되지 않도록 당신이 (예를 들어, MySQL을)를 사용하는 데이터베이스에 적절한 방법을 사용하여 속성 값의 모든 따옴표 등 탈출합니다. update_attributes
및 find
으로 전달되는 매개 변수화 된 :conditions
에도 동일하게 적용됩니다. 조심해야 할 때와 수동 이스케이프를해야하는 경우는 리터럴 문자열을 쿼리로 데이터베이스 연결에 전달하는 경우입니다.
복제본 : http://stackoverflow.com/questions/2144778/sql-injection-prevention-for-create-method-in-rails-controller – dombesz
이것은 중복되지 않습니다. 빌드'. 또한 중복 가능성은 답변보다는 질문에 대한 의견으로 게시해야합니다. – mikej