仅使用SimpleSchema验证是否不安全,而不使用允许/拒绝规则?

时间:2017-05-02 20:26:07

标签: meteor simple-schema

我以同构的方式使用SimpleSchema(Toolbar mToolBar; ActionBar mActionBar; AutoCompleteTextView mSearchTextView; private void initializeActionsBarWithAutocomplete(){ // ToolBar mToolBar = (Toolbar) findViewById(R.id.toolbar); // AutoCompleteTextView mSearchTextView = (AutoCompleteTextView) mToolBar.findViewById(R.id.search_text_view); mSearchTextView.setAdapter(mTypeAheadAdapter); mSearchTextView.setOnItemClickListener(this); mSearchTextView.addTextChangedListener(this); setSupportActionBar(mToolBar); // ActionBar mActionBar = getSupportActionBar(); mActionBar.setTitle(getResources().getString(R.string.default_title)); mActionBar.setDisplayHomeAsUpEnabled(true); } 包)。验证消息显示在客户端以及node-simpl-schema

我的问题是这个设置是否真的是安全的,如果我还需要编写允许/拒绝规则。

例如:

meteor shell

SimpleSchema.setDefaultMessages messages: en: "missing_user": "cant create a message with no author" MessagesSchema = new SimpleSchema({ content: { type: String, label: "Message", max: 200, }, author_id: { type: String, autoform: defaultValue: -> Meteor.userId() custom: -> if !Meteor.users.findOne(_id: @obj.author_id) "missing_user" }, room_id: { type: String, } }, {tracker: Tracker}) 我测试它并按预期工作。

meteor shell

我应该在允许/拒绝规则中复制此验证逻辑吗?或者我可以让我的> Messages.insert({content: "foo", author_id: "asd"}) /home/max/Desktop/project/meteor/two/.meteor/local/build/programs/server/packages/aldeed_collection2-core.js:501 throw error; // 440 ^ Error: cant create a message with no author 函数始终返回allow,就像我现在正在做的那样?

1 个答案:

答案 0 :(得分:0)

我有一些非常简单的规则可确保应用程序的安全:

  1. 不要使用允许/拒绝规则 - 拒绝所有客户端写入请求。
  2. 如果客户需要在数据库中编写内容,则必须通过Meteor方法进行编写。
  3. 理想情况下,Meteor方法会调用一个函数(可以是共享代码或特定于服务器的代码),然后检查数据库修饰符的有效性(使用Schema)将在这些函数中完成。
  4. 或者,您也可以创建客户端方法,在调用服务器端方法之前,使用模式清理对象并执行自己的验证。