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");
텍스트로만 표시되고 코드로 실행되지 않습니다.
j
(escape_javascript
)의 별칭이 안전하지 않다고 명시한 이 기사를 봤기 때문에 잘 모르겠습니다. 안전하고 텍스트를 올바르게 표시하는 방식으로 .js.erb
템플릿의 선택 옵션을 어떻게 업데이트할 수 있는지 명확하지 않습니다.
이해를 해주세요:
특수 문자를 디코딩할 수 있지만 이는 Rails 방식이 아닙니다.
html_safe는 문자열 결과가 안전한지 보장하지 않지만 문자열의 HTML 태그가 HTML로 표시될 수 있도록 문자열이 안전하다고 명시적으로 지정하므로 XSS 문제가 해결되지 않습니다.
으아아아이 기사에 따르면 작은따옴표나 큰따옴표 안에
으아아아escape_javascript
를 사용해도 안전합니다.그러므로 시도 3은 XSS 안전하고 Rails 방식이므로 선호됩니다.
귀하의 코드는 다음과 같이 단순화될 수 있습니다:
으아아아