Greasemonkey 또는 Chrome의 콘텐츠 스크립트 엔진과 유사한 스크립팅 확장 프로그램을 개발 중입니다. 이 확장 기능을 사용하여 스크립트 작성자는 로컬 파일에 액세스하는 것과 같은 매우 위험한 작업을 수행 할 수 있습니다.자바 스크립트 (또는 브라우저 확장 프로그램)가 제한된 기능의 사용을 어떻게 감지합니까?
이 확장 기능을 대중에게 공개 한 경우 스크립트에서 "위험한"기능을 사용하면 초보 사용자에게 경고 할 수 있기를 바랍니다. 이 경고문을 가능한 한 우회하기가 어렵도록하고 싶습니다.
예를 들어, 확장 사용자를 보호 된 문자열 GM_openSQL_Connection
를 검색하고 경고 할 수 - 아마도 같은 :
은 기본 웹 페이지가 샌드 박스 메커니즘 GM_openSQL_Connection
덕분에 액세스 할 수 없을 것이라는 점을 가정 . 마찬가지로, <script>
노드는 할 수 없습니다.
그러나, 스크립트 작가가 여전히 같은 뭔가 위에서, 간단한 검색을 피할 수 :
eval (decodeURI ("GM_op%65nSQL_Connection (...);"))
그래서 질문하는 악한 스크립터는 속일 수있는 방법의 종류 무엇 입니다 제한된 기능 사용에 대한 점검, 그리고 그러한 장난을 어떻게 막을 수 있습니까?
참고 : 허위 경고는 괜찮을 수 있습니다. 예를 들어 스크립트 작성자가 정적 문자열에서 "GM_openSQL_Connection"이라는 텍스트를 사용하는 경우 그는 (false) 경고를 지정하기 만하면됩니다.
완전히 관련이 없지만 예제 경고가 마음에 들었습니다. :) – fayerth
위험하다는 것은 함수 이름 만 위험하다고 말할 수는 없습니다. 이름은 블랙리스트에 올라있는 것이 아니라 행동을 위해서만 가능합니다. 쿠키에 직접 액세스하고 제 3 자 호스트에 원격 액세스하는 기능은 일반적으로 위험한 것으로 인식됩니다 (그렇다고 할 수는 없지만 이는 경고 일 수 있습니다). 일부 다른 패턴은 환영받지 못하는 것으로 해석 될 수도 있습니다. – YuS
필자는 [JavaScript Deobfuscator] (https://addons.mozilla.org/addon/javascript-deobfuscator/)와 동일한 접근법을 사용하는 것이 좋습니다 (디버깅 인터페이스를 사용하여 컴파일 방법에 관계없이 모든 함수 호출을 얻을 수 있습니다). 그게 도움이되지 않을거야. 'var foo = window [ "GM_op"+ "enSQL_Connection"]; foo (...)'를 고려하십시오. 함수 이름이 너무 쉽게 바뀔 수 있기 때문에 함수 이름으로 갈 수 없습니다. –