我正在处理需要在特定文件夹的每个子目录中执行操作的脚本.
写这个最有效的方法是什么?
我有一个基本路径/无论/ foo /
并且
$_GET['path']应该是相对的.
但是,如何在不允许目录遍历的情况下完成此操作(读取目录)?
例如.
/\.\.|\.\./
Run Code Online (Sandbox Code Playgroud)
不会过滤得当.
如何让这篇文章在python 2.6中遵循符号链接?
def load_recursive(self, path):
for subdir, dirs, files in os.walk(path):
for file in files:
if file.endswith('.xml'):
file_path = os.path.join(subdir, file)
try:
do_stuff(file_path)
except:
continue
Run Code Online (Sandbox Code Playgroud) python symlink traversal directory-traversal symlink-traversal
我想将目录从一个驱动器复制到另一个驱动器.我选择的目录包含许多子目录和文件.
如何使用Qt实现相同的功能?
来自Python WSGI应用程序的以下代码片段是否可以从目录遍历中安全?它读取作为参数传递的文件名并返回指定的文件.
file_name = request.path_params["file"]
file = open(file_name, "rb")
mime_type = mimetypes.guess_type(file_name)[0]
start_response(status.OK, [('Content-Type', mime_type)])
return file
Run Code Online (Sandbox Code Playgroud)
我安装的应用程序下http://localhost:8000/file/{file}并送与URL的请求http://localhost:8000/file/../alarm.gif和http://localhost:8000/file/%2e%2e%2falarm.gif.但我没有尝试发送(现有)文件.那么我的代码在目录遍历中是否已经安全?
新的方法
似乎以下代码阻止目录遍历:
file_name = request.path_params["file"]
absolute_path = os.path.join(self.base_directory, file_name)
normalized_path = os.path.normpath(absolute_path)
# security check to prevent directory traversal
if not normalized_path.startswith(self.base_directory):
raise IOError()
file = open(normalized_path, "rb")
mime_type = mimetypes.guess_type(normalized_path)[0]
start_response(status.OK, [('Content-Type', mime_type)])
return file
Run Code Online (Sandbox Code Playgroud) 在Haskell中是否有一些递归目录walker所以我可以编写类似的东西
listing <- walkDir "/tmp"
Run Code Online (Sandbox Code Playgroud)
我不想写我自己的.我可以从cabal安装一些依赖,但我希望它是跨平台的(至少Linux和Windows).
我想验证我的Web应用程序没有路径遍历漏洞.
我正试图用curl它,像这样:
$ curl -v http://www.example.com/directory/../
Run Code Online (Sandbox Code Playgroud)
我希望将HTTP请求显式地发送到/directory/../URL,以测试涉及代理的特定nginx规则不容易受到路径遍历的影响.即,我希望发送此HTTP请求:
> GET /directory/../ HTTP/1.1
Run Code Online (Sandbox Code Playgroud)
但是curl正在重写/URL 的请求,如输出中所示:
* Rebuilt URL to: http://www.example.com/
(...)
> GET / HTTP/1.1
Run Code Online (Sandbox Code Playgroud)
是否可以使用curl此测试,强制它传递请求中的确切URL?如果没有,那么什么是合适的方式?
我刚刚开始使用Python,但已经发现它比Bash shell脚本更有效率.
我正在尝试编写一个Python脚本,它将遍历从我启动脚本的目录中分支的每个目录,并且对于它遇到的每个文件,加载此类的实例:
class FileInfo:
def __init__(self, filename, filepath):
self.filename = filename
self.filepath = filepath
Run Code Online (Sandbox Code Playgroud)
filepath属性是root(/)的完整绝对路径.这是我想要主要程序要执行的伪代码模型:
from (current directory):
for each file in this directory,
create an instance of FileInfo and load the file name and path
switch to a nested directory, or if there is none, back out of this directory
Run Code Online (Sandbox Code Playgroud)
我一直在阅读关于os.walk()和ok.path.walk()的内容,但是我想了解一下在Python中实现这一点的最简单方法是什么.提前致谢.
我想规范化来自外部资源的路径以防止目录遍历攻击.我知道realpath()函数,但遗憾的是这个函数只返回现有目录的路径.因此,如果目录不存在(还),则realpath()函数会切断不存在的路径的整个部分.
所以我的问题是:你知道一个只能规范路径的PHP函数吗?
PS:我也不想提前创建所有可能的目录;-)
如何用您喜欢的语言遍历目录树?
在不同的操作系统中遍历目录树需要了解什么?在不同的文件系统上?
您最喜欢的库/模块是什么帮助遍历目录树?