사용자가 정규 표현식을 기반으로 데이터를 일치시킬 수있는 함수를 작성하려고하지만 사용자 문자열의 위생에 우려하고 있습니다. SQL 쿼리를 사용하면 SQL 삽입 공격을 피하기 위해 바인드 변수를 사용할 수 있지만 정규식에 대한 메커니즘이 있는지 확실하지 않습니다. Regexp.escape이 있지만 유효한 정규 표현식을 허용하고 싶습니다. 난 그냥 tag.name
에 직접 일치하고 있기 때문에사용자 정규화 살생
def tagged?(text)
tags.each do |tag|
return true if text =~ /#{tag.name}/i
end
return false
end
누군가가 정규 표현식의 탈옥과 혼란을 야기 할 수있는 PROC 호출 또는 무언가를 삽입 할 수있는 기회가 :
다음은 샘플 기능입니다?
모범 사례에 대한 조언을 주시면 감사하겠습니다.
나는 proc를 삽입하려고 시도하면서 동일한 오류가 발생했다. activerecord 객체에 할당 될 때 이스케이프 처리되는 것 같습니다 : # 그리고 내가 실제로 사용하려고 할 때와 같은 오류가 발생합니다. 정규식. 내가 누락 된 것이 있는지 확실하지 않았습니다. –