나는 XSS에 대해 읽고 그것을 피하는 법을 배웠습니다. 필자가 읽은 것부터, 웹 애플리케이션을 다소 XSS 안전하게 만들기 위해 입력 필터링, 애플리케이션 코드의 적절한 처리 및 출력 인코딩이 필요하다는 것을 알게되었습니다. 여러 기사를 읽은 후에도 몇 가지 의구심이 지속됩니다.XSS에 관한 몇 가지 설명
나는 jQuery.text, 또는 element.text = untrusted_data ("untrusted_data")를 시도했을 때 브라우저가 완벽하게 컨텐츠를 인코딩 할,하지만 난 다른 곳에서 해당 클라이언트 측을 읽고 보인다 인코딩을 신뢰할 수 없어야하며 서버 쪽에서 "항상"인코딩해야합니다. 클라이언트 측 인코딩이 안전하지 않은 것으로 간주되는 이유는 무엇입니까?
나는 또는 element.value = untrusted_data 충분히 안전 할 것 같다 (untrusted_data) jQuery.val를 사용하여 값을 설정하려고 할 때마다. 정말 XSS가 안전합니까? 아니면 여기에 어떤 사례가 있습니까?
- 또한, 나는 특성 이름은 URL 컨텍스트 기반의 속성을 포함하지 않는 경우에만 및 의 setAttribute (ATTRNAME, untrusted_data) jQuery.setAttribute (untrusted_data ATTRNAME)은 일반적으로 안전한 것으로 간주된다 어딘가에 읽는 일이 (src, href 등) 또는 이벤트 핸들러 (onClick, onMouseOver 등). 그렇다면 어떻게 setAttribute ("href", untrusted_data)를 사용하여 href 속성을 설정해야합니까? 서버 측의 encodeForHtmlAttribute (untrusted_data)가 올바른 접근 방식입니까?
- 어떻게 동적 HTML 생성을 처리해야합니까? 아래의 예를
function copyData() { var divValue = jQuery("#divName1").html(); jQuery("#divName2").html(divValue);/XSS Here }
내가 여기 달성하고자하는 divName1에서 텍스트를 얻을 divName2의 내용에 붙여 넣는 것입니다
<div id="divName2"></div>
<div id="divName1" onClick="copyData()">untrusted_data</div>
jQuery를 ("# divName2") 텍스트 (divValue) 그래서
,이 인코딩을 보장을 변경할 수 있습니다,하지만 난 이해, 우리는 클라이언트 측 인코딩이 안전하지 않은 말 서버 측 인코딩 만 사용해야합니다. 클라이언트 측 인코딩을 사용하지 않고 XSS를 안전하게 작성하려면 어떻게해야합니까? 나는 조금 :(여기 혼란 스러워요. 이 의심을 취소 저를 도와주세요.이 질문을 많이 번입니다
'element.text' 자체는 안전하지만 문자열 보간을 사용하여 클라이언트 코드에 데이터를 전달할 때 문제가 발생할 수 있습니다. –