자바스크립트 인젝션
처음 거는 async 지정으로 불러오는 스크립트에서 가끔씩 터지는 현상이 있엇쩌. 신뢰정책에 걸리는 거도 쫌그렇쩌.
커넥션 분리 만큼은 피하려고 하였는데 망했쩌. 웹뷰에서 코드 인젝션이 먹히는 데가 몇개 없어서 이난리 이어요.
아 .. 그런데 인라인 스크립트에 new Worker(“worker.js“) 이렇게 해버린 거에는 어뜨케 걸러야 하는지 모르겠어요.
쩜쉬고 나면 생각이 나겠쩌.

src=postMessage(["overrideScript"],"*")
constructor(){
if(trustedTypes&&trustedTypes.createPolicy){
try{
trustedTypes.createPolicy('default',{
createHTML:function(string,sink){
return string
}
})
}catch(e){}
}
for(var i=document.scripts.length-1;i>=0;i--){
var a=document.scripts[i]
var src=a.getAttribute("src")
if(this.src.indexOf(src)>=0){
if(document.body){
var b=document.createElement("script")
b.src=this.src+"?"+Date.now()
b.async=a.async
b.crossOrigin=a.crossOrigin
b.referrerPolicy=a.referrerPolicy
a.parentNode.insertBefore(b,a)
a.parentNode.removeChild(a)
}else{
a.parentNode.removeChild(a)
document.write(a.outerHTML.replace(src,src+"?"+Date.now()))
}
break
}
}
}
여담 ..
안드로이드는 기초 설계가 처참하여서 이난리 이어요.
shouldInterceptRequest 로직에서 요청 유형만 받았어도 무난하였지 않았겠나요. isMainFrame 처럼 is~~ 방식에 프로그래밍은 대단히 지양하여야 하는 거여요. 자바 nio도 이모양으로 설계하였던데 if문으로 여러번 비교하는 거보다 일반저긍로 switch구문 하나에 분기를 태우는 방식이 빠르고 정확해요. 그리고 isMainFrame처럼 해버리면 개발하는 과정에 많은 분기를대응하기 어려워져서 결과적으로 완성하지 못하고 시거먼 코딩을 해버리겠쩌. 가끔 보면 터졌어도 아까워서 버리지 않는 분들이 많아요. 누가 코딩하는데 이거 문제로 손이 아프면 발로 키보드를 치면 된다고 하였는데 어떠나요.
