Ruby on rails 允许用户输入代码示例的最不危险的方式是什么?

Ruby on rails 允许用户输入代码示例的最不危险的方式是什么?,ruby-on-rails,ruby,security,sql-injection,Ruby On Rails,Ruby,Security,Sql Injection,我正在实现一个Rails应用程序,用户可以在其中存储代码片段供以后参考。我计划使用降价输入文本,可能会使用。(Stackoverflow使用的正是它。) 我有点担心人们在编辑框中输入代码的想法。据我所知,输入SQL可能会破坏我的数据库,或者输入JavaScript可能会在以后运行并造成破坏 通常,Rails具有防止这种情况发生的功能,但是我在这里遇到了特殊情况,因为我的用户会被鼓励输入代码片段吗 有没有其他我应该注意的预防措施?只要清理一下你的数据库条目,你就会没事了。Rails现在默认会这样做

我正在实现一个Rails应用程序,用户可以在其中存储代码片段供以后参考。我计划使用降价输入文本,可能会使用。(Stackoverflow使用的正是它。)

我有点担心人们在编辑框中输入代码的想法。据我所知,输入SQL可能会破坏我的数据库,或者输入JavaScript可能会在以后运行并造成破坏

通常,Rails具有防止这种情况发生的功能,但是我在这里遇到了特殊情况,因为我的用户会被鼓励输入代码片段吗


有没有其他我应该注意的预防措施?

只要清理一下你的数据库条目,你就会没事了。Rails现在默认会这样做。您只需正确使用该框架。有关更多信息,请查看此链接:

这样做:

Project.find(:all, :conditions => ["name = ?", params[:name]])
# or
Project.find(:all, :conditions => {:name => params[:name]})
不是这个:

Project.find(:all, :conditions => "name = '#{params[:name]}'")
您还必须通过

<%=h possible_harmful_text %>

供参考:

跨站点脚本(XSS)是一种 计算机安全漏洞分析 通常出现在web应用程序中 允许通过 恶意网络用户进入网页 由其他用户查看。例子 这些代码包括客户端脚本。 一个被利用的跨站点脚本 攻击者可以使用此漏洞 绕过访问控制,如 同一原产地政策。脆弱性 这种鱼已被用来制作工艺品 强大的网络钓鱼攻击和浏览器 功绩。跨站点脚本 在网站上,大约80%的人 所有文件化的安全性 截至2007年的脆弱性。经常 在一次攻击中,“一切看起来 “罚款”给可能 未经授权的进入、盗窃 敏感数据和财务数据的安全性 损失。 ()

当然

SQL注入是一种代码注入 利用安全漏洞的技术 系统中出现的漏洞 应用程序的数据库层。这个 当用户 输入被错误地过滤 用于字符串文字转义字符 嵌入SQL语句或用户 输入不是强类型,并且 因此意外地被执行。它是 一个更一般的类的实例 可能出现的漏洞 每当一个编程或脚本 语言是嵌入在另一种语言中的。 SQL注入攻击也是众所周知的 作为SQL插入攻击。 ()


只需清理数据库条目,就可以了。Rails现在默认会这样做。您只需正确使用该框架。有关更多信息,请查看此链接:

这样做:

Project.find(:all, :conditions => ["name = ?", params[:name]])
# or
Project.find(:all, :conditions => {:name => params[:name]})
不是这个:

Project.find(:all, :conditions => "name = '#{params[:name]}'")
您还必须通过

<%=h possible_harmful_text %>

供参考:

跨站点脚本(XSS)是一种 计算机安全漏洞分析 通常出现在web应用程序中 允许通过 恶意网络用户进入网页 由其他用户查看。例子 这些代码包括客户端脚本。 一个被利用的跨站点脚本 攻击者可以使用此漏洞 绕过访问控制,如 同一原产地政策。脆弱性 这种鱼已被用来制作工艺品 强大的网络钓鱼攻击和浏览器 功绩。跨站点脚本 在网站上,大约80%的人 所有文件化的安全性 截至2007年的脆弱性。经常 在一次攻击中,“一切看起来 “罚款”给可能 未经授权的进入、盗窃 敏感数据和财务数据的安全性 损失。 ()

当然

SQL注入是一种代码注入 利用安全漏洞的技术 系统中出现的漏洞 应用程序的数据库层。这个 当用户 输入被错误地过滤 用于字符串文字转义字符 嵌入SQL语句或用户 输入不是强类型,并且 因此意外地被执行。它是 一个更一般的类的实例 可能出现的漏洞 每当一个编程或脚本 语言是嵌入在另一种语言中的。 SQL注入攻击也是众所周知的 作为SQL插入攻击。 ()


您不会处于特殊情况下,因为会鼓励用户输入代码片段。人们可以在不鼓励输入的字段中输入代码片段。基本上,你应该总是“格外小心”。不要相信用户输入。

您并不是处于特殊情况下,因为会鼓励用户输入代码片段。人们可以在不鼓励输入的字段中输入代码片段。基本上,你应该总是“格外小心”。不要相信用户的输入。

实际上,接受代码样本比允许实际代码更安全。我的意思是,例如,堆栈溢出允许我输入实际的HTML来控制我的帖子

允许实际代码是非常危险的,因为您将对代码进行评估。在堆栈溢出示例中,站点实际上正在评估输入标记,如
——这意味着它需要注意onclick处理程序等。彻底清理比简单地转义要困难得多


所以,只要你不评估任何东西,你就和其他任何接受文本输入的网站处于同一条船上。坚持标准的数据输入原则——例如,在编写任何输入之前立即转义任何和所有输入——你会没事的。

事实上,接受代码样本比允许实际代码更安全。我的意思是,例如,堆栈溢出允许我输入实际的HTML来控制我的帖子

允许实际代码是非常危险的,因为您将对代码进行评估。在堆栈溢出示例中,站点实际上正在评估输入标记,如
——这意味着它需要注意onclick处理程序等。彻底的清理要困难得多