Skip to content

Commit a45a54b

Browse files
Uncontrolled data used in path expression (#542)
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
1 parent 3b5fce3 commit a45a54b

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

src/Web/Grand.Web.Admin/Controllers/SettingController.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -780,6 +780,11 @@ private void SavePushNotificationsToFile(PushNotificationsSettingsModel model, I
780780
private string GetSafeFilePath(IConfiguration configuration, IWebHostEnvironment webHostEnvironment, string filename)
781781
{
782782
var directoryParam = configuration[CommonPath.DirectoryParam] ?? "";
783+
784+
// Validate directoryParam to ensure it does not contain ".." or path separators
785+
if (directoryParam.Contains("..") || directoryParam.Contains("/") || directoryParam.Contains("\\"))
786+
throw new ArgumentException("Invalid directory parameter - contains illegal characters.");
787+
783788
var safeDirectoryName = Path.GetFileName(directoryParam);
784789
var combinedPath = Path.Combine(webHostEnvironment.WebRootPath, safeDirectoryName, filename);
785790
var fullPath = Path.GetFullPath(combinedPath, webHostEnvironment.WebRootPath);

0 commit comments

Comments
 (0)