保护使用许多不同形式和mongodb作为数据库的Sinatra应用程序的最佳实践是什么?
不确定你在找什么.这里有一些想法.
如果您想验证系统的用户,我建议使用在Rack层运行的身份验证,例如Warden.这不仅比自定义身份验证解决方案更强大,它作为中间件运行,因此它大部分是透明的,如果您决定在Rack堆栈中添加额外的中间件,自定义Rack应用程序或Rails,则可以在Sinatra之外使用.
mongodb操作的方式,命令与数据分离,意味着注入是不可能的,因此对用户输入的一些最小的健全性检查应该使数据库妥协的风险相当低.与任何数据库一样,它的良好做法是永远不会直接将任何数据从用户放入数据库而没有适当的边界检查和转义.
确保用户无法输入其他用户可以看到的HTML/JS/CSS,否则您的站点可能容易受到XSS的攻击.
如果可能,请清楚地定义允许用户选择的所有可能输入,然后确保您从用户收到的输入完全匹配您定义的可能值之一.如果不是拒绝输入或选择一个合理的默认值.
良好的单元测试和广泛的测试覆盖通常可以帮助减少意外行为,有时可以用来帮助防止安全问题.试试吧.当然不会受伤.
另一个可以在外围有利于安全的良好做法是不重新发明轮子.与社区其他人所依赖的强化,经过验证的功能解决方案一起使用,这样您就可以从其他人的见解中受益,并在其他人发现并修复您使用的库中的安全漏洞时获得奖励.
您可能需要解决许多其他系统,数据库和应用程序级别问题,以确保您的应用程序是安全的.如果没有对整个系统架构的深入了解,您的问题范围有点过于宽泛.