【笨方法学python】ex15 - 读取文件

代码如下:

点击查看代码
# -*-coding:utf-8- -*-
# 读取文件

from sys import argv # 加载 argv

script, filename = argv # 设置 fileame 参数

txt = open(filename) # 把 file object 传递给 txt。 内容为:“<open file 'ex15', mode 'r' at 0x0000000003051810>”
# 这里直接读取文件名,存在目录穿越漏洞,可以直接读取系统内任意文件。
# 防止 Path Manipulation 的最佳方法是采用一些间接手段:创建一个必须由用户选择的合法值的列表。通过这种方法,就不能直接使用用户提供的输入来指定资源名称。
# 但在某些情况下,这种方法并不可行,因为这样一份合法资源名的列表过于庞大,维护难度过大。因此,在这种情况下,程序员通常会采用执行拒绝列表的办法。在输入之前,
# 拒绝列表会有选择地拒绝或避免潜在的危险字符。但是,任何这样一个列表都不可能是完整的,而且将随着时间的推移而过时。更好的方法是创建一个字符列表,允许其中的
# 字符出现在资源名称中,且只接受完全由这些被认可的字符组成的输入。

print "Here's your file %r:" % filename # 输出文件名
print txt.read() # 输出文件内容
txt.close()

print "Type the filename again:" # 输出 “再输入文件名”
file_again = raw_input(">") # 让用户输入文件名

txt_again = open(file_again) # 打开文件

print txt_again.read()
txt_again.close()

待读取文件:ex15


This is stuff I typed into a file.
It is really cool stuff.
Lots and lots of fun to have in here.


执行结果:
image

posted @ 2022-10-05 04:34  TiramisuPS  阅读(52)  评论(0编辑  收藏  举报