View 외부에서 sanitize 메서드를 사용하려고 합니다.
인터넷 개발자로서는 당연한 지식인 것 같지만 이번이 첫 대응이어서 까다롭다.몇 차례 좌절을 겪었기 때문에, 이번에는 그중의 하나를 쓰고 싶다.
이루고 싶은 일.
https://qiita.com/kamohicokamo/items/571c58f2d6738a7dfe6a
이 기사를 참고하여 XSS 대책을 위한 데이터 검증을 하고자 합니다.
예:
name.html.haml
'山田太郎<script>alert("山田太郎です")</script>'
이렇게 뜨면...포함된 JavaScript가 실행되었습니다.이것은 안전성이 좋지 않다.
= sanitize '山田太郎<script>alert("山田太郎です")</script>'
사용sanitize
이렇게 하면script 탭이 제거되어 일반적인 텍스트가 됩니다.
그렇지만
뷰
sanitize
에 특별히 쓸 수 있지만 html 라벨이 혼합된 문자열을 입력하는 단계에서 무효화하려고 합니다.그러나 이
sanitize
방법은 조수 방법이기 때문에 View 이외에는 사용하기 어렵다.메서드
나는 이런 느낌의 방법을 만들었다.
model
def remove_script_tag(str)
ActionController::Base.helpers.sanitize(str)
end
※ sanitize
기본적으로 이 방법은 <script>
라벨 정도만 제거하여 remove_script_tag
로 합니다.before_validation
나 before_save
에서 이 방법을 교묘하게 사용하면 악성 스크립트가 문자열로 보내져도 무효화될 수 있다.컨디션
ruby 2.6.6
rails 6.0.3.2
Reference
이 문제에 관하여(View 외부에서 sanitize 메서드를 사용하려고 합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Taki_Kazuya/items/8f32cbf55c2edd531611텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)