선택 상자 옵션을 위한 js.erb 템플릿 업데이트 - XSS를 안전하게 처리하고 텍스트를 올바르게 표시합니다.
P粉674757114
P粉674757114 2024-03-31 00:36:22
0
1
619

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

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

1번 시도

으아악
  • 문제: blog.name的显示文本被进行了HTML编码。例如,"Johnson & Johnson"的文本显示为:"Johnson & Johnson". 아포스트로피와 같은 다른 특수 문자에도 동일한 표시 문제가 발생합니다.

2번 시도

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

  • 문제: 통과하면 blog.name设置为alert("Gotcha");来测试XSS时,它会出错:选项根本没有被更新。最终似乎问题是在这种上下文中使用html_safe 응용 프로그램에서 큰따옴표를 어떻게 처리해야 할지 알 수 없습니다.

3번 시도

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

으아악
  • 질문: 이것이 안전한지 잘 모르겠습니다. jescape_javascript)의 별칭이 안전하지 않다고 명시한 이 기사를 봤기 때문에 잘 모르겠습니다.

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

P粉674757114
P粉674757114

모든 응답(1)
P粉594941301

이해를 해주세요:

  • 1번 시도

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

  • 2번 시도

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

으아아아
  • 3번 시도

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

으아아아

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

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

으아아아
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿