如果动态构建UNC路径以将其限制为特定根路径,应使用哪些技术?
string root = @"\\Blah\Share\YouStayHere\";
//pretend second string is from a query string a user could manipulate
string path = @"\\Blah\Share\YouStayHere\" + @"..\..\TresspassingQueryString";
if( ! SomeValidation(root, path) ) { throw new Exception("you dirty bastard"...
虽然可能应该通过权限来管理这个问题,但也许在同一应用程序中的另一个ASP页面的上下文中可以访问其他目录,因此权限不是选项。
我知道Request.MapPath可以用于保持对应用程序目录的访问,但这是.NET应用程序虚拟路径外的共享。
我希望使用Path.Combine来解决路径问题,然后检查确保pathCombined
以root
开头,但Path.Combine将继续保留....\
此外,我想象中还可能有其他类型的注入,所以我希望有比仅对"..\"令牌进行正则表达式更通用的方法。