[研究]Forify SCA 的 Open Redirect 問題(六)用HtmlSanitizer套件
2022-06-09
[研究]Forify SCA 的 Open Redirect 問題(一)重導 Response.Redirect() 與 Server.Transfer()
https://shaurong.blogspot.com/2021/07/aspnetfortify-sca-open-redirect.html
後來發現在某些情況下,這樣改會有問題。
[研究]Forify SCA 的 Open Redirect 問題(二)ckeditor 的 tmpFrameset.html
https://shaurong.blogspot.com/2021/07/aspnetfortify-scatmpframesethtmlopen.html
[研究]Forify SCA 的 Open Redirect 問題(三)回到上一頁按鈕、返回按鈕https://shaurong.blogspot.com/2021/08/aspnet-fortify-scaopen-redirect.html
[研究]Forify SCA 的 Open Redirect 問題(四)用 ASP.NET + JavaScript 來解決
http://shaurong.blogspot.com/2021/08/forify-sca-open-redirect-aspnet.html
[研究]Forify SCA 的 Open Redirect 問題(五)用空的函數欺騙(失敗)
https://shaurong.blogspot.com/2022/06/forify-sca-open-redirect.html
[研究]Forify SCA 的 Open Redirect 問題(六)用HtmlSanitizer套件
https://shaurong.blogspot.com/2022/06/forify-sca-open-redirect-htmlsanitizer.html
突然想到 ASP.NET + JavaScript 方式可否順利重導,不被 Micro Focus Forify SCA (Static Code Analyzer ) 原始碼掃描 報告有 Open Redirect 問題呢?測試了一下
NuGet 安裝 HtmlSanitizer 7.1.512 套件
https://github.com/mganss/HtmlSanitizer
HtmlSanitizer 是一個 .NET 庫,用於從可能導致XSS 攻擊的構造中清除 HTML 片段和文檔。它使用AngleSharp來解析、操作和渲染 HTML 和 CSS。
Default3.aspx.cs
using System;
namespace WebApplication1
{
public partial class Default3 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string url = "/WebForm1.aspx?ID=" + Request.QueryString["ID"].ToString();
url = Common.MyAntiXssFilter(url);
Response.Redirect(url);
}
}
}
|
Common.cs
using Ganss.XSS; namespace WebApplication1 { public class Common { public static string MyAntiXssFilter(object inputObject) { string inputStr = ""; if (inputObject != null) { inputStr = inputObject.ToString(); } var sanitizer = new HtmlSanitizer(); sanitizer.AllowedAttributes.Add("class"); sanitizer.AllowedAttributes.Add("id"); //sanitizer.AllowedAttributes.Add("&"); // 沒用; 若處理網址, & 會變成 & var sanitized = sanitizer.Sanitize(inputStr); sanitized = sanitized.Replace("&", "&"); return sanitized; } } } |
實測結果,過關。
(完)
沒有留言:
張貼留言