nomagick commited on
Commit
e4bc29a
·
unverified ·
1 Parent(s): 92f6364

fix: expect malformed url in iframes

Browse files
backend/functions/src/services/jsdom.ts CHANGED
@@ -66,12 +66,20 @@ export class JSDomControl extends AsyncService {
66
  } else if (thisSnapshot?.html) {
67
  x.innerHTML = thisSnapshot.html;
68
  x.querySelectorAll('script, style').forEach((s) => s.remove());
69
- x.querySelectorAll('[src]').forEach((el) => {
70
- el.setAttribute('src', new URL(el.getAttribute('src')!, src!).toString());
71
- });
72
- x.querySelectorAll('[href]').forEach((el) => {
73
- el.setAttribute('href', new URL(el.getAttribute('href')!, src!).toString());
74
- });
 
 
 
 
 
 
 
 
75
  }
76
  });
77
  }
 
66
  } else if (thisSnapshot?.html) {
67
  x.innerHTML = thisSnapshot.html;
68
  x.querySelectorAll('script, style').forEach((s) => s.remove());
69
+ if (src) {
70
+ x.querySelectorAll('[src]').forEach((el) => {
71
+ const imgSrc = el.getAttribute('src')!;
72
+ if (URL.canParse(imgSrc, src!)) {
73
+ el.setAttribute('src', new URL(imgSrc, src!).toString());
74
+ }
75
+ });
76
+ x.querySelectorAll('[href]').forEach((el) => {
77
+ const linkHref = el.getAttribute('href')!;
78
+ if (URL.canParse(linkHref, src!)) {
79
+ el.setAttribute('href', new URL(linkHref, src!).toString());
80
+ }
81
+ });
82
+ }
83
  }
84
  });
85
  }