【发布时间】:2011-08-29 03:54:39
【问题描述】:
是否可以使用客户端 javascript 作为关键点来构建动态 Web 应用程序?我不是在谈论服务器端 javascript(如节点),而是在谈论使用 javascript 处理大部分网站:模板、表单处理等。
当然,简短的回答是“是的,有可能”。但我主要关心的是数据库传统上位于服务器上时的数据库数据操作和安全性。理想情况下,客户端 javascript 驱动的应用程序应该几乎直接与数据库对话。我知道 Couchdb 允许这样做,但是如何防止用户提交查询以查看他们不应被允许查看的数据?考虑到主要验证也应该是客户端并且很容易伪造,如何处理输入验证?
这在我看来很有趣,但并不真正可行,但也许有一些我不知道的解决方案,或者围绕一些数据库的微小安全层,或者我忽略的项目等。
我知道 CouchDb Standalone 应用程序 (couchapp),它是一项接近我所追求的技术,但它强制执行一种开放的方法,使其不适用于我能想到的所有场景。
欢迎对此主题提出任何建议。
编辑:由于需要示例,请参阅 simples 博客。我想在首页显示最后五个帖子。如果有人以非常简单的方式“入侵”该页面,他们可以检索较旧的帖子。没关系。但是当我想插入新帖子时怎么办?如果 javascript 对数据库具有开放访问权限,那么任何人都可以在 my 博客中写帖子——我不想要它。此外,任何人都可以删除我的帖子或其他用户的评论,这是 我 想要的特权。如果我想避免 cmets 超过 500 个字符并包含坏词怎么办?同样,作为客户端的验证,用户可以绕过它。
【问题讨论】:
-
我希望我可以对这个问题两次投票。我对从客户端代码直接访问 CouchDB 的最佳实践特别感兴趣。
-
这是安全与风险管理,如果你能付出代价,你就可以掷骰子。除此之外,您能否更准确地了解您迄今为止在此问题上调查或阅读的内容?这些东西可能非常先进,也许是下一代应用程序的方式;)在移动系统上,所有代码都在客户端上运行。那么为什么不在浏览器中呢?
-
@David 你看过couchapp吗?
-
@Pavel Veller:不,但请放心,它现在在我的队列中。谢谢!
-
更新了我的答案,希望对您或其他人有所帮助。无论如何,我都赞成这个问题,以便在这里获得更多答案:)
标签: javascript security client-side database-driven