四 重定向和文件
另一类安全问题是围饶在web应用里重定向和文件的使用。
4.1 重定向
web应用里的重定向是一个被低估的craker工具:它不仅可以让用户掉入一个陷进网站,而且还可以创造一个完备的攻击。
当用户被允许由一个URL重定向的时候,它由可能就是个漏洞。最明显的攻击是将用户重定向到一个和原始页面一模一样的假页面。这个所 谓的‘钓鱼攻击’通过给用户发送一封包含正常的不让人起疑的链接的email, 通过XSS方式往web应用里注射这个恶意链接或者把链接放到一 个虚假的网站(域名看起来差不多,页面也相同的站点)。它是毫不让人怀疑的,因为这个链接的起始URL是这个正常的web应用,指向恶意站 点的URL都被隐藏在重定向参数里:http://www.example.com/site/redirect?to= www.attacker.com. 这里由个例子:
def legacy
redirect_to(params.update(:action=>'main'))
end
如果用户访问legacy这个action,将会被重定向到mail action。这样做的意图是为了维护legacy的参数,并把这些参数传到main action。 但是,如果它包含了一个host key,就会被攻击者利用。
http://www.example.com/site/legacy?param1=xy¶m2=23&host=www.attacker.com
如果它在url的尾部, 将很难被注意到,用户就被神不知鬼不觉的重定向到了攻击者的页面。一个简单的对策是,在legacy action里只包 含预期的参数(白名单的办法,不是取消所有意向不到的参数)。如果你重定向到一个网址,你需要用白名单或是正则表达式检查它。
4.1.1 Self-contained XSS(自载的xss攻击)
另一个重定向和self-contained XSS 攻击是通过firefox和opera里使用的一种数据协议。该协议直接在浏览器里显示其内容,可以使任何 内容,从html,javascript到图片。(这不是一个漏洞,而是一个功能)
data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K
这个例子是一个Base64编码的显示简单消息框的javascript。在一个重定向的URL里,一个攻击者能用它里面的恶意代码重定向这个url。
更详细的攻击原理可以参看这里:http://www.gnucitizen.org/blog/self-contained-xss-attacks/
对策:do not allow the user to supply (parts of) the URL to be redirected to.(说实话,这里我没看明白)
4.2 文件上传
- 确保文件上次不覆盖重要的文件,和同步的媒体文件进程。
很多web应用允许用户上传文件,用户可以选择的文件名字,应该随时被过滤,因为攻击者可以用恶意的文件名覆盖服务器上任意文件。如 果你在/var/www/uploads存储上传文件,用户输入一个文件名:../../../etc/passwd, 它可能覆盖一个重要文件。
当过滤用户输入的文件名时,不要试图去删除恶意的部分。想一想,如果去掉所有的../ , 攻击者输入.. .. //, 那么结果就成了../。最 好是用白名单的方式,用一套可接受的字符去检查文件名的有效性。一旦它不是一个有效的文件名,则拒绝它(或替换它),但是不删除它们 。这有一份来自attachment_fu插件的文件名清单:
def sanitize_filename(filename) returning filename.strip do |name| # NOTE: File.basename doesn't work right with Windows paths on Unix # get only the filename, not the whole path name.gsub! /^.*(\\|\/)/, '' # Finally, replace all non alphanumeric, underscore # or periods with underscore name.gsub! /[^\w\.\-]/, '_' endend
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文件
, 文件名
, 用户
, web重定向
, 攻击
, 一个
, 恶意
, rails上传图片
取消重定向
rails线程安全、rails 三目运算、三国演义导读、三国演义名著导读、三国演义导读ppt,以便于您获取更多的相关知识。