mirror of
https://github.com/langgenius/dify.git
synced 2026-04-05 10:12:43 +08:00
fix(web): restrict postMessage targetOrigin from wildcard to specific origins (#30690)
Co-authored-by: XW <wei.xu1@wiz.ai>
This commit is contained in:
@@ -66,7 +66,9 @@ const Header: FC<IHeaderProps> = ({
|
|||||||
const listener = (event: MessageEvent) => handleMessageReceived(event)
|
const listener = (event: MessageEvent) => handleMessageReceived(event)
|
||||||
window.addEventListener('message', listener)
|
window.addEventListener('message', listener)
|
||||||
|
|
||||||
window.parent.postMessage({ type: 'dify-chatbot-iframe-ready' }, '*')
|
// Security: Use document.referrer to get parent origin
|
||||||
|
const targetOrigin = document.referrer ? new URL(document.referrer).origin : '*'
|
||||||
|
window.parent.postMessage({ type: 'dify-chatbot-iframe-ready' }, targetOrigin)
|
||||||
|
|
||||||
return () => window.removeEventListener('message', listener)
|
return () => window.removeEventListener('message', listener)
|
||||||
}, [isIframe, handleMessageReceived])
|
}, [isIframe, handleMessageReceived])
|
||||||
|
|||||||
@@ -10,12 +10,15 @@ export const useOAuthCallback = () => {
|
|||||||
const errorDescription = urlParams.get('error_description')
|
const errorDescription = urlParams.get('error_description')
|
||||||
|
|
||||||
if (window.opener) {
|
if (window.opener) {
|
||||||
|
// Use window.opener.origin instead of '*' for security
|
||||||
|
const targetOrigin = window.opener?.origin || '*'
|
||||||
|
|
||||||
if (subscriptionId) {
|
if (subscriptionId) {
|
||||||
window.opener.postMessage({
|
window.opener.postMessage({
|
||||||
type: 'oauth_callback',
|
type: 'oauth_callback',
|
||||||
success: true,
|
success: true,
|
||||||
subscriptionId,
|
subscriptionId,
|
||||||
}, '*')
|
}, targetOrigin)
|
||||||
}
|
}
|
||||||
else if (error) {
|
else if (error) {
|
||||||
window.opener.postMessage({
|
window.opener.postMessage({
|
||||||
@@ -23,12 +26,12 @@ export const useOAuthCallback = () => {
|
|||||||
success: false,
|
success: false,
|
||||||
error,
|
error,
|
||||||
errorDescription,
|
errorDescription,
|
||||||
}, '*')
|
}, targetOrigin)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
window.opener.postMessage({
|
window.opener.postMessage({
|
||||||
type: 'oauth_callback',
|
type: 'oauth_callback',
|
||||||
}, '*')
|
}, targetOrigin)
|
||||||
}
|
}
|
||||||
window.close()
|
window.close()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user