찾다

 >  Q&A  >  본문

선택 상자 옵션을 위한 js.erb 템플릿 업데이트 - XSS를 안전하게 처리하고 텍스트를 올바르게 표시합니다.

Rails 애플리케이션에서 .js.erb 파일을 렌더링하고 있습니다. 이 파일에서는 선택 상자의 옵션을 업데이트합니다.

가장 중요한 것은 XSS 안전한 방식으로 작업을 수행한다는 것입니다. 이 스택 오버플로 솔루션을 기반으로 OWASP DOM 기반 XSS 예방 치트 시트를 참조하여 다음과 같은 방식으로 선택 상자의 옵션을 업데이트합니다.

1번 시도

으아악

2번 시도

Rails에 하나가 있다는 것을 알고 있습니다 html_safe方法,所以我尝试使用它:我将"<%= blog.name %>";更新为"<%= blog.name.html_safe %>";.

3번 시도

이 방법은 효과가 있는 것 같습니다. 옵션이 업데이트되었고 표시 텍스트가 제대로 작동하는 반면, 표시 텍스트가 있는 옵션은 alert("gotcha"); 텍스트로만 표시되고 코드로 실행되지 않습니다.

으아악

안전하고 텍스트를 올바르게 표시하는 방식으로 .js.erb템플릿의 선택 옵션을 어떻게 업데이트할 수 있는지 명확하지 않습니다.

P粉674757114P粉674757114233일 전581

모든 응답(1)나는 대답할 것이다

  • P粉594941301

    P粉5949413012024-03-31 11:24:38

    이해를 해주세요:

    • 1번 시도

    특수 문자를 디코딩할 수 있지만 이는 Rails 방식이 아닙니다.

    • 2번 시도

    html_safe는 문자열 결과가 안전한지 보장하지 않지만 문자열의 HTML 태그가 HTML로 표시될 수 있도록 문자열이 안전하다고 명시적으로 지정하므로 XSS 문제가 해결되지 않습니다.

    으아아아
    • 3번 시도

    이 기사에 따르면 작은따옴표나 큰따옴표 안에 escape_javascript를 사용해도 안전합니다.

    으아아아

    그러므로 시도 3은 XSS 안전하고 Rails 방식이므로 선호됩니다.

    귀하의 코드는 다음과 같이 단순화될 수 있습니다:

    으아아아

    회신하다
    0
  • 취소회신하다