Today's the day

向软件大牛炫耀我会焊单片机,向硬件大牛炫耀我会写 Rails,向软硬件大牛炫耀我生物,向软硬件生物大牛炫耀我会折腾期货 -_-bbb

自写 html 闭合的一个 Bug
用 Ruby 求定积分

用 File.expand_path 过滤文件名

galeki posted @ 2008年6月15日 08:57 in RoR , 6533 阅读

一些情况下,要从用户哪里得到文件名或者目录名参数,比如文件读取、上传、删除,创建目录,还有 typo 那个 theme_controller 中的 css 和 js 缓存。

恶意用户可以输入含有 "../.." 这样的字符的参数,从而跳转到上级目录,读取或者删除一些其他目录的文件,所以必须要过滤,比如 typo 的 theme_controller.rb 代码中:

  1. def render_theme_item(type, file, mime = nil)
  2.   ...
  3.   if file.split(%r{[\\/]}).include?("..")
  4.     return (render :text => "Not Found", :status => 404)
  5.   end
  6.   ...

file 来自 params[:filename],检查 file 中是否含有 "..",如果有的话,就不做任何动作返回 404。

但是这样并不能解决所有的问题,参数可以被 URI 编码成 %xx%xx 的形式,而且天知道还有什么字符可以跳转到上级目录

最近在看 《Adcanced Rails》这书,上面写了种不错的方法:

  1. name = params[:filename]
  2.  
  3. base_path = File.expand_path(File.join(RAILS_ROOT, "public"))
  4. file_path = File.join(base_path, name)
  5.  
  6. if File.expand_path(file_path).start_with?(base_path)
  7.   data = File.read(file_path)
  8. else
  9.   raise "Access denied"
  10. end

File.expand_path 这方法可以扩展路径字符中所有的特殊字符,包括 "~", "..", ".",形成平坦的路径字符串( 原来我一直以为 File.join 也有这个功效…… ),最后只要检查一下文件的最终地址,开头是否为安全的目录即可,这样就可以轻松的将用户的读取范围限制在 base_path 之下了~

 

  • 无匹配
  • 无匹配
meidir 说:
2022年12月05日 00:18

there are many dating services on the internet and i also join some of them” 二手Macbook

meidir 说:
2022年12月11日 20:51

My partner and i continually go to your website and also retrieve everything you submit the following but I in no way left a comment however nowadays once i observed this kind of submit, i could not quit personally coming from commenting right here. great mate! محامي في جدة

meidir 说:
2022年12月11日 20:52

All you need to know about News with our valuble article. محامي في الرياض

meidir 说:
2022年12月11日 20:52

Thanks a bunch for sharing this with all of us you actually know what you’re talking about! Bookmarked. Kindly also visit my web site =). We could have a link exchange agreement between us! محامي في الرياض

meidir 说:
2022年12月11日 20:52

Your blog is one of a kind, i love the way you organize the topics.*,”~, محامي جدة

meidir 说:
2022年12月11日 20:53

Hi there, I found your blog via Google while searching for a related topic, your web site came up, it looks great. I’ve bookmarked it in my bookmarks. محامي جنائي جدة

sofoj46278 说:
2022年12月17日 18:36

Thank you, I’ve recently been searching for info about this subject for ages and yours is the best I have discovered so far. But, what about the conclusion? Are you sure about the source? healthcare in china for expats

 

===========

 

The following time I learn a weblog, I hope that it doesnt disappoint me as a lot as this one. I imply, I do know it was my option to read, but I really thought youd have one thing attention-grabbing to say. All I hear is a bunch of whining about something that you may fix in case you werent too busy in search of attention. 747 Live

meidir 说:
2022年12月18日 16:54

joker mobile ใหม่ ที่สุดแห่งความสนุกที่ทุกท่านกำลังจะได้สัมผัสในเว็บไซต์ จะเป็นหนึ่งในสิ่งที่สามารถทำทุกท่านรวยได้พร้อมความสะใจ. joker mobile


=============


joker ฝาก19รับ100 หนึ่งในโปรโมชั่นสุดคุ้มที่มีเงื่อนไขในการรับโปรโมชั่นง่าย ๆ เพียงทำการสมัครและทำการฝากรับโบนัสฟรีทันที. joker slotxo ฝาก 19 รับ 100


=============


joker สล็อต ฝาก10รับ100 ผู้ให้บริการสล็อตออนไลน์ที่มีเกมสล็อตให้เลือกเล่นมากมายหลากหลายเกมปัจจุบันมีการพัฒนาระบบให้มาพร้อมกับความทันสมัย. joker สล็อต ฝาก10รับ100


=============


pg joker ใหม่ เว็บของเราเล่นได้และถอนได้เลยทันทีและมี สูตรสล็อต โบนัสแตกง่าย ให้คุณได้เพลิดเพลิน กับเกมหลากหลายที่มีคุณภาพสูง. pg joker


=============


pg joker wallet ค่ายเกมสล็อตที่ได้รับกระแสที่นิยมอย่างไม่ขาดสาย มากับแบบอย่างธีมเกมที่หลากหลาย ให้ท่านได้เลือกเล่นแบบไม่น่าเบื่อ. pg joker wallet


=============


ทดลองเล่นสล็อต joker เกมใหม่ๆมาแล้วกับเว็บอันดับหนึ่ง เพลิดเพลินไปกับรูปแบบที่หลากหลาย วางเดิมพันได้มากมาย สมัครวันนี้รับเครดิตฟรี. ทดลองเล่นสล็อต joker


=============


ทางเข้าslotxo joker คลิ๊กที่นี่เพื่อเข้าสู่ความมันส์ในปี 2022 เว็บสล็อตรูปแบบใหม่ เกมไม่ซ้ำใคร วางเดิมพันสุดเร้าใจ แตกไว แจกจริง จ่ายจริง. ทางเข้าslotxo joker


=============


ทางเข้าslotxo joker คลิ๊กที่นี่เพื่อเข้าสู่ความมันส์ในปี 2022 เว็บสล็อตรูปแบบใหม่ เกมไม่ซ้ำใคร วางเดิมพันสุดเร้าใจ แตกไว แจกจริง จ่ายจริง. ทางเข้าเล่น slotxo joker


=============


สล็อตเติม true wallet ขั้นต่ำ1บาท เกมสล็อตเป็นเกมที่ได้รับความนิยม ที่ได้รับกระแสการตอบกลับจากผู้เล่นอย่างดีเยี่ยม. สล็อต เติม true wallet ขั้นต่ำ 1 บาท


=============


slot1234 joker พบกับโปรโมชั่นสุดพิเศษของเกมส์สล็อตได้เงินจริง พบกับระบบถอนเงินเกมสล็อตออนไลน์ ที่รวดเร็วที่สุด มีเครดิตฟรีแจกทุกUser. สล็อต1234 joker

meidir 说:
2022年12月18日 16:54

member slot - บทความสล็อตออนไลน์ SLOTXO - สล็อตออนไลน์ XOSLOTZ. member slot


============


sagame 1688 - คาสิโน SA Game SLOTXO - สล็อตออนไลน์ XOSLOTZ. sagame 1688


============


slot auto wallet ระบบการเล่นเกมสล็อต สมัครอัตโนมัติฟรี - บทความสล็อตออนไลน์ SLOTXO - สล็อตออนไลน์ XOSLOTZ. slot auto wallet


============


slotxo สล็อต ฝาก10รับ100 โปรโมชั่นใหม่ล่าสุด โปรโมชั่นดีๆพร้อมที่จะให้บริการสมาชิกทุกคนที่ทำตามเงื่อนไข ฝาก 10 บาทรับเพิ่มรวมเป็น 100 บาท. slotxo สล็อต ฝาก10รับ100


============


slotxo สล็อต ฝาก20รับ100 หนึ่งในผู้ให้บริการเกมสล็อตออนไลน์ที่มาแรงที่สุดเป็นอันดับ 1 สมัครสมาชิกวันนี้รับฟรีโปรโมชั่นโบนัสสุดคุ้ม. slotxo สล็อต ฝาก20รับ100


============


เครดิตฟรี 100 สมัครสมาชิกใหม่วันนี้รับทันที ฟรีเครดิต 100 วางแผนทดสอบการเล่นสล็อตออนไลน์ เล่นได้ไม่จำกัดเวลา ไม่มีเงื่อนไขใดๆทั้งสิ้น. เครดิตฟรี 100


============


เครดิตฟรี 50ยืนยันเบอร์ เล่นสล็อตออนไลน์ ผ่านเว็บตรง อุปกรณ์สื่อสาร ทุกระบบ ได้อย่างปลอดภัย ไม่มีประวัติการโกง เว็บมาแรงที่สุดแห่งปี. เครดิตฟรี 50 ยืนยันเบอร์


============


เครดิตฟรีไม่ต้องแชร์ เล่นเกมสล็อตออนไลน์ โดยไม่ต้องพึ่งดวง กับกลยุทธสำหรับในการเอาชนะเกมได้เงินจริง รับรองผล สามารถเอาชนะเกมได้ไม่ยาก. เครดิตฟรีไม่ต้องแชร์


============


เครดิตฟรีไม่ต้องฝากไม่ต้องแชร์แค่สมัคร - บทความสล็อตออนไลน์ SLOTXO - สล็อตออนไลน์ XOSLOTZ. เครดิตฟรีไม่ต้องฝาก


============


ฝากถอนslotxo ด้วยระบบง่าย ๆ ในไม่กี่ขั้นตอน จัดการได้เร็วทันใจ ถอนเงินไว โดยสามารถใช้งานผ่านหน้าเว็บไซต์ของเรา เล่นที่นี่ รองรับระบบออโต้ จัดการสะดวก. ฝาก-ถอน slotxo

meidir 说:
2022年12月21日 22:22

this is really nice to read..informative post is very good to read..thanks a lot! 여우알바

 

==============

 

Wow i can say that this is another great article as expected of this blog.Bookmarked this site.. 메이저사이트

sofoj46278 说:
2022年12月22日 22:47

This is really serious, You’re a significantly professional article writer. I have signed up with your feed and also watch for finding your marvelous write-ups. What’s more, I’ve shared your web blog of our own myspace. 카지노사이트

meidir 说:
2022年12月23日 22:35

My spouse and i have been absolutely thrilled when Ervin managed to finish up his web research from the precious recommendations he received when using the blog. It is now and again perplexing to just find yourself handing out information that many the rest might have been selling. And now we take into account we have you to appreciate for this. The entire explanations you made, the easy site menu, the friendships you can give support to foster – it’s many unbelievable, and it’s really making our son and us recognize that this topic is entertaining, and that is highly essential. Many thanks for everything! visit my site here – alternative medicine institute kolkata dedicated servers

meidir 说:
2022年12月24日 00:20

You made a few good points there. I did a search on the topic and found the majority of folks will agree with your blog. 건마

meidir 说:
2023年1月04日 22:56

I am really inspired with your writing talent well with the layout to your weblog. Is this a paid topic or did you modify it your self? Anyway stay up the excellent high quality writing, it’s rare to peer a great blog like this one nowadays. 우리카지노

meidir 说:
2023年1月07日 00:11

Cheap Handbags Wholesale Are you ok merely repost this in my site? I’ve to grant credit where it really is due. Have a very great day! 메이저바카라

meidir 说:
2023年2月18日 17:22

Hi, I just found your website via Bing. Your article is truly applicable to my life right now, and I’m really delighted I found your website. 슈어맨

meidir 说:
2023年4月15日 22:53

I am glad to be a visitant of this pure weblog ! , appreciate it for this rare info ! . it support Singapore

meidir 说:
2023年4月27日 18:32

It’s really a nice and helpful piece of info. I’m glad that you just shared this helpful info with us. Please keep us informed like this. Thanks for sharing. cheapest auto transport

meidir 说:
2023年4月29日 00:38

I am constantly browsing online for ideas that can benefit me. Thanks! voyance gratuite par telephone

meidir 说:
2023年6月07日 19:15

Whats tough now is how the systematic appearance to life is not changed. Do you know what I’m saying? It’s nearly as if we run through the life experience with our eyes closed on, not understanding the true meaning of our own destiny. printer maintenance

meidir 说:
2023年9月20日 18:45

A lot of thanks for every one of your effort on this web page. My aunt takes pleasure in doing investigation and it’s easy to see why. All of us learn all concerning the lively form you offer priceless guides through this web blog and as well as inspire response from others about this content and our favorite princess is becoming educated so much. Enjoy the remaining portion of the new year. Your carrying out a very good job. medical issues

meidir 说:
2024年1月17日 03:25

I really like your writing style, superb information, thankyou for putting up : D. AI Workflow Automation Guide

Meidir 说:
2024年7月18日 02:28

Last month, when i visited your blog i got an error on the mysql server of yours..-~’~ john spencer ellis recent photos

 

 

==================

 

 

You can also put a chatbox on your blog for more interactivity among readers.*.~;: john spencer ellis news


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter