我的 iOS 应用程序需要连接到 mysql 服务器。为此,我想创建一个 Web 应用程序,充当客户端应用程序和服务器端数据库之间的中间人。
我担心的是,有人可以简单地找出我的应用程序使用的 URL 并传递他们自己的 URL 参数 - 因为网络应用程序不知道是否从我的 iOS 应用程序发送合法数据,而不是有人只是正确地输入从任何网络浏览器精心制作的 URL,系统将容易受到攻击。
假设我有一个 PHP 函数,用于将用户标记为“已验证”(在我向他们发送电子邮件验证码之后)。这是非常标准的东西,但是是什么阻止某人从网络浏览器发出相同的请求?
当然,应用程序用来进行数据库查询的用户将拥有有限的权限,因此数据库的其余部分不会面临风险。然而,即使让用户从应用程序外部激活他们的帐户也将是灾难性的。
我想到的选项是使用 https,这样即使用户知道了 URL,他们也不知道密码并且无法嗅探它,因为它从头到尾都是加密的。不幸的是,对于贫穷的大学生来说,https 可能很昂贵,所以我想要一个替代方案(如果有的话)。
最佳答案
如前所述,没有 100% 的安全性。但是有几种解决方案放在一起可以提供很大的安全性。
正如您所指出的,这是一个重要的部分,因为它可以防止嗅探。
使用 session 并且不允许任何没有有效 session 的请求(第一个请求除外,它必须对应用程序进行身份验证)。
检查用户代理并设置额外的 http header ,以获得您的应用程序的唯一指纹。 (仍然有人可以嗅探,但他需要使用 curl 或类似工具。)
构建您的查询字符串并应用哈希函数。服务端需要实现反向功能。 ?43adbf764Fz 而不是 ?a=1&b=2
这更进了一步。使用共享 secret 来计算散列。在服务器上重复相同的操作。这已经是很强的安全性了。为了破解,需要对您的应用程序进行逆向工程。
你说它是 iOS 应用。安装后,iOS 会生成一个唯一的 token 。让您的应用程序向您的服务器注册此 token 。像这样,您对每个安装都有一个独特的强大共享 secret ,并且没有办法破解您的网络应用程序。
关于php - 如何只允许从我的 iOS 应用程序访问我的 MySQL 数据库? (使用 webapp 作为 db 的网关),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18394848/
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
在railstutorial中,作者为什么选择使用这个(代码list10.25):http://ruby.railstutorial.org/chapters/updating-showing-and-deleting-usersnamespace:dbdodesc"Filldatabasewithsampledata"task:populate=>:environmentdoRake::Task['db:reset'].invokeUser.create!(:name=>"ExampleUser",:email=>"example@railstutorial.org",:passwo
我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah
我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
我正在处理旧代码的一部分。beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)endRubocop错误如下:Avoidstubbingusing'allow_any_instance_of'我读到了RuboCop::RSpec:AnyInstance我试着像下面那样改变它。由此beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)end对此:let(:sport_
我喜欢使用Textile或Markdown为我的项目编写自述文件,但是当我生成RDoc时,自述文件被解释为RDoc并且看起来非常糟糕。有没有办法让RDoc通过RedCloth或BlueCloth而不是它自己的格式化程序运行文件?它可以配置为自动检测文件后缀的格式吗?(例如README.textile通过RedCloth运行,但README.mdown通过BlueCloth运行) 最佳答案 使用YARD直接代替RDoc将允许您包含Textile或Markdown文件,只要它们的文件后缀是合理的。我经常使用类似于以下Rake任务的东西:
rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我
文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co