Skip to content

Commit 7a4a58f

Browse files
committed
Add CSP head for displaying iframe in rendering file
1 parent 6e012d9 commit 7a4a58f

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

modules/markup/renderer.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ type RenderContext struct {
4646
GitRepo *git.Repository
4747
ShaExistCache map[string]bool
4848
cancelFn func()
49-
UseIframe bool
49+
AllowIFrame bool
5050
}
5151

5252
// Cancel runs any cleanup functions that have been registered for this Ctx
@@ -227,7 +227,7 @@ func (err ErrUnsupportedRenderExtension) Error() string {
227227
func renderFile(ctx *RenderContext, input io.Reader, output io.Writer) error {
228228
extension := strings.ToLower(filepath.Ext(ctx.RelativePath))
229229
if renderer, ok := extRenderers[extension]; ok {
230-
if renderer.DisplayInIFrame() && ctx.UseIframe {
230+
if renderer.DisplayInIFrame() && ctx.AllowIFrame {
231231
return renderIFrame(ctx, renderer, input, output)
232232
}
233233
return render(ctx, renderer, input, output)

routers/web/repo/view.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -524,12 +524,14 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st
524524
URLPrefix: path.Dir(treeLink),
525525
Metas: metas,
526526
GitRepo: ctx.Repo.GitRepo,
527-
UseIframe: true,
527+
AllowIFrame: true, // allow possible iframe from UI
528528
}, rd, &result)
529529
if err != nil {
530530
ctx.ServerError("Render", err)
531531
return
532532
}
533+
// to prevent iframe load third-party url
534+
ctx.Resp.Header().Add("Content-Security-Policy", "frame-src "+setting.AppURL)
533535
ctx.Data["EscapeStatus"], ctx.Data["FileContent"] = charset.EscapeControlString(result.String())
534536
} else if readmeExist && !shouldRenderSource {
535537
buf := &bytes.Buffer{}

0 commit comments

Comments
 (0)