>
><img src=0 onerror=alert(99)> 와 같은 보안 문자열을 넣으면 ExtJs (ExtJs 3.1) CellEditing 플러그인에서  셀 중 하나에서 다음을 실행합니다 (경고가 표시됨). beforeEdit 또는 Validateedit 또는 edit 이벤트를 사용하여이를 방지 할 수 있습니까?

  • 답변 # 1

    입력 된 스크립트 실행을 차단해야합니다. 이를 위해서는 셀에 입력 된 내용을 소독해야합니다. 키 프레스 이벤트 또는 변경 이벤트의 편집을 확인합니다. 그러나 변경 이벤트에서 이것을 사용하면 초기로드시에도 트리거됩니다. 정규식을 사용하여 스크립트 태그를 찾고 한 번 경고 사용자를 찾거나 입력 필드 값을 재설정 할 수 있습니다.

  • 답변 # 2

    renderer 를 첨부 할 수 있습니다.   Ext.htmlEncode 로 값을 인코딩하는 그리드의 편집 가능한 각 열에 대한 함수 . 이렇게하면 삽입 된 HTML이 평가되지 않고 대신 텍스트로 표시되지 않습니다.

    ExtJs 문서의 Ext.htmlEncode 함수에서 :

    와이즈 비즈 다음 스 니펫은 이름 열이 편집 가능한 페이지로 격자를 렌더링합니다. 렌더러

    Convert certain characters (&, <, >, ', and ") to their HTML character equivalents for literal display in web pages.

     값과 입력 된 HTML이 텍스트로 표시됩니다. 작동하는 바이올린을 참조하십시오.

    htmlEncode
    
    

    Ext.create('Ext.grid.Panel', { store: Ext.data.StoreManager.lookup('simpsonsStore'), columns: [ { header: 'Name', dataIndex: 'name', editor: 'textfield', renderer: function (value, metaData) { return Ext.htmlEncode(value); } }, plugins: { cellediting: { clicksToEdit: 1 } }, height: 200, width: 400, renderTo: Ext.getBody() });

  • 이전 winapi - 생 마우스/키 이벤트를 얻기위한 C # 후킹
  • 다음 reactjs - mapStateToProps가 다시 렌더링되는 이유, 즉 Component에서 render () 호출