我正在实现一个Rails应用程序,用户可以在其中存储代码片段供以后参考.我打算使用Markdown进行文本输入,并且可能会使用wmd markdown编辑器.(Stackoverflow使用的那个.)
我有点担心人们在编辑框中输入代码的想法.根据我的理解,存在进入SQL的危险,这可能会搞砸我的数据库,或者输入稍后会运行的JavaScript并且会恶作剧.
通常,Rails具有防范此功能的功能,但我是否处于特殊情况,因为我的用户将被鼓励输入代码片段?
我应该注意哪些额外的预防措施?
只需清理你的数据库条目,你就可以了.Rails现在默认执行此操作.你只需要正确使用框架.查看更多信息:http://wiki.rubyonrails.org/howtos/security/sql_injection
做这个:
Project.find(:all, :conditions => ["name = ?", params[:name]]) # or Project.find(:all, :conditions => {:name => params[:name]})
不是这个:
Project.find(:all, :conditions => "name = '#{params[:name]}'")
你还必须通过去防止XSS攻击
<%=h possible_harmful_text %>
以供参考:
跨站点脚本(XSS)是一种通常在Web应用程序中发现的计算机安全漏洞,它允许恶意Web用户将代码注入其他用户查看的Web页面.此类代码的示例包括客户端脚本.攻击者可以使用利用漏洞利用的跨站点脚本漏洞来绕过访问控制,例如相同的源策略.此类漏洞已被利用来制造强大的网络钓鱼攻击和浏览器攻击.截至2007年,在网站上执行的跨站点脚本大约占所有已记录的安全漏洞的80%.通常在攻击期间,"一切看起来都很好"给可能遭受未经授权的访问,盗窃敏感数据和财务的最终用户失利.(通过维基百科)
而且当然
SQL注入是一种代码注入技术,它利用应用程序数据库层中发生的安全漏洞.当用户输入被错误地过滤为嵌入在SQL语句中的字符串文字转义字符或用户输入没有强类型并因此意外执行时,存在漏洞.它是一种更普遍的漏洞类型的实例,只要一种编程或脚本语言嵌入另一种内部,就会发生这种漏洞.SQL注入攻击也称为SQL插入攻击.1 (通过维基百科)