2017-10-23 16 views
0

일부 입력 매개 변수가 있는데 XSS 공격을 막아서 새니 타이 저를 사용하고 싶습니다. 자바 스크립트 태그로 데이터를 저장하지 않으려면 살균기를 사용할 수있는 두 가지 방법이 있습니다.루비에서 입력 한 모든 사용자를 sanitze하는 방법은 무엇입니까?

Book.create(title: ActionController::Base.helpers.sanitize(params[:object][:title]) 

2) 것은 같은 모델의 생성 및 업데이트에 대한 기능 정의 :
1)과 같은 소독제 각 PARAM 사용을위한 모든 행동에

before_validation :sanitize_title,:on => [:create,:update] 
def sanitize_title 
    self.title = ActionController::Base.helpers.sanitize(self.title) 
end 

을하지만 문제입니다 열과 매개 변수가 증가 할 때 이러한 함수가 증가하므로 응답 속도에 영향을 줄 수 있다고 생각했습니다. 모든 매개 변수를 함께 정리할 수있는 방법이 있습니까?

답변

0

데이터를 수동으로 위생 처리 할 필요가 없습니다. 뷰 레이어에서 레일즈는 당신을 위해 그것을 수행합니다 (너무 오래 당신은 raw을 사용하지 않습니다).

당신이 명백한 낙하의 톤이있다 할 방법 : 당신이 편집 프롬프트를 보여 주면, 그것은 거

  • 당신이 제목을 업데이트하지 않고 모델을 업데이트 할 때마다 다시 살균 것

    • 을, 제목 다시 살균됩니다.

    어떤 용도로도 사용되지 않습니다.

    before_save :update_sanitized_versions 
    def update_sanitized_versions 
        self.sanitized_title = ActionController::Base.helpers.sanitize(self.title) 
    end 
    

    이 만드는 유일한 버전 : 나을

    있는 유일한 방법은 위생이 당신의 병목 현상 경우에서와 같이 서버 자원을 절약하기 위해 입력의 사전 소독 버전을 저장했다입니다 감각. 그런 다음보기에서 <%= raw model.sanitized_title %>을 사용합니다. 가장 확실히 위생 앱에서 병목 현상이 아니기 때문에

    나는, 그 일을 권장하지 할 .

  • +0

    api는 나머지이고 json으로 json을 얻고 json을 뷰에 렌더링합니다. 따라서 js 태그가 포함되어 있는지 여부에 관계없이 데이터를 저장하고 내 응답 (jbuilder)에서 데이터를 처리하는지 여부를 나타냅니다. –

    +0

    그렇다면 json을 위생 처리하는 기술이 무엇이든간에. 좋은 이유가없는 한 HTML은 JSON 형식으로 보내야합니다. – Ven

    +0

    미안하지만 무슨 뜻인지 모르겠다. 내가 말한 매개 변수를 그대로 유지해야한다는 것을 의미합니까? –