Cordova 웹앱을 안드로이드 Playstore 에 올렸더니 jQuery-3.3.1.min.js 에서 보안 취약점이 발견된다고 한다. 무려 "오류"라고 빨리 고치라는 것 같다.
좀 검색해보니 SNYK-JS-JQUERY-174006 이라는 것 같고, 3.4.x 버전이 되어서야 수정이 되었다고는 하는데, jQuery 버전에 따라 ui 가 달라진다는 소문도 있고 하여 소스를 직접 수정하기로 하였다.
문제가 되는 부분은
if ( target === copy ) {
로, 이 코드를
if ( name === "__proto__" || target === copy ) {
이렇게 고치면 된다고 한다....
이 코드의 원래 부분을 찾아보니 아래와 같다.
for ( name in options ) {
src = target[ name ];
copy = options[ name ];
// Prevent never-ending loop
if ( target === copy ) {
continue;
}
지만, 나는 min.js 를 고쳐야 하므로 해당 코드를 찾아보면 아래와 같다.
for(t in e)n=a[t],a!==(r=e[t])&&
대단하다. copy = options[ name ]
구문과 target === copy
인 경우 continue
하는 구문을 a!==(r=e[t])&&
으로 assign
문과 조건을 반대로 하여 continue
이후 구문을 실행하도록 minify
해버렸다.
감탄은 여기서 멈추고 어쨌든 고쳐야 하니 다음과 같이 하자. t
가 name
이니까 아래와 같이 하면 된다. 물론, 조건문을 반대로 하는 것을 잊으면 안된다.
for(t in e)n=a[t],"__proto__"!==t&&a!==(r=e[t])&&
끝.
참고:
https://www.python2.net/questions-137983.htm
https://www.privacy-wise.com/mitigating-cve-2019-11358-in-old-versions-of-jquery/
https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js