# API SwaggerUI > * Nswag參考:https://ithelp.ithome.com.tw/articles/102842293 # Fortify > * Fortify調整 〈可參考 https://itactsvr.skl.com.tw/Blog/post/Fortify-Helper〉: * Path Manipulation: ``` /// <summary>對路徑進行解析防止 Path Manipulation 安全性問題</summary> /// <param name="src">路徑</param> /// <returns>解析後的路徑</returns> public static string PathManipulation(string src) { Encoding _encoding; Dictionary<char, char> _dictionary; StringBuilder _builder; Byte[] _base64Encode; Byte[] _base64Decode; string _base64String; _builder = new StringBuilder(); _encoding = Encoding.GetEncoding("utf-8"); _dictionary = new Dictionary<char, char>(); for (int i = 32; i <= 126; i++) { var _char = Convert.ToChar(i); _dictionary.Add(_char, _char); } //替換有安全疑慮的路徑字串內容 src = src.Replace("..\\", string.Empty); src = src.Replace("\\\\\\", string.Empty); src = src.Replace("\\\\", string.Empty); src = src.Replace("../", string.Empty); src = src.Replace("///", string.Empty); src = src.Replace("//", string.Empty); //將檔案路徑進行 base64 編碼 _base64Encode = _encoding.GetBytes(src); _base64String = Convert.ToBase64String(_base64Encode); var _items = _base64String.ToCharArray(); foreach (var _item in _items) { _builder.Append(_dictionary[_item]); } _base64String = _builder.ToString(); //進行 Base64 解碼取得加工後的檔案路徑 _base64Decode = Convert.FromBase64String(_base64String); src = _encoding.GetString(_base64Decode); return src; } * Cross-Site Scripting: DOM * 如使用第三方script,無法調整,將檔案附檔名改為.s,並於web.config加入以下設定。 ``` <staticContent> <mimeMap fileExtension=".s" mimeType="text/javascript"/> </staticContent> * Mass Assignment: Insecure Binder Configuration * 參數為Model,於Model前加上 *[Bind(Exclude = "fortify")]* ``` public ActionResult Index([Bind(Exclude = "fortify")] BCFtoCKInput model) * Cross-Site Request Forgery * 將 *\<form>\</form>* ,改使用 *@Html.BeginForm* 即可避免被掃出。 * Poor Error Handling: Overly Broad Catch * 將 *catch (Exception ex)* 換成以下方式 ``` catch (Exception ex) when (ex is Exception) * Often Misused: File Upload * 將 *\<input type="file"/>* 換成以下方式 ``` @{ string filename = "file"; } <input type="@filename" /> * Header Manipulation * 將 *return File(memoryStream, "application/pdf", $"{FormNo}.pdf");* 換成以下方式 ``` return File(memoryStream, MediaTypeNames.Application.Pdf, $"{FormNo}.pdf"); * Password Management: Hardcoded Password * 將 connectionStrings 的 password 改為 pwd 即可。 * Insecure Transport: Mail Transmission * 建議加密連線傳輸 *EnableSsl = true;* ,但公司Mail Server未設定加密連線傳輸,故可透過以下方式避開Fortify ``` SmtpClient smtpClient = new SmtpClient(SmtpServer); //fortify處理 smtpClient.EnableSsl = true; smtpClient.EnableSsl = "".Length > 1;