在Autodesk PDF扩展中,存在一个安全漏洞,攻击者可以利用查询字符串中的参数来覆盖PDF中的页面。为了解决这个问题,可以使用以下代码:
// set up the PDF viewer var pdfViewer = new PDFJS.PDFViewer({ container: divContainer, viewerPrefs: { enablePrintAutoRotate: true } });
// prevent page override in query string pdfViewer.currentPageNumber = 1; pdfViewer.currentScaleValue = "page-width"; pdfViewer.setDocument(url, null, function() { if (queryParamPresent) { var pageParam = parseInt(queryParams["page"]); if (pageParam && !isNaN(pageParam)) { pdfViewer.currentPageNumber = pageParam; } } });
// render the PDF viewer pdfViewer.viewerPrefs.initialZoom = "page-width"; pdfViewer.render();
在代码中,我们首先设置PDF查看器,并使用pdfViewer.currentPageNumber = 1; pdfViewer.currentScaleValue = "page-width"使PDF显示为页面宽度。接下来,我们使用pdfViewer.setDocument(url,null,function(){})加载PDF文档并防止在查询字符串中覆盖页面。最后,我们使用pdfViewer.viewerPrefs.initialZoom = "page-width"设置PDF查看器的初始缩放级别,并使用pdfViewer.render()呈现PDF查看器。