0

我创建了一个 angularjs 应用程序,它使用 php 来处理数据库查询和执行身份验证模式。

当用户登录到应用程序时,他在 php 中这样做,并且 php 将用户数据提取到会话中。然后 angularjs 向 php 页面发出 http post 请求以读取获取的数据。之后,每当用户请求数据时,Angular 都会向 php 页面发布一个帖子。

我正在考虑使用一个框架来以更好的方式进行身份验证和数据库查询。我的安全知识很原始,我担心我的代码有错误。

经过研究,我发现 laravel 看起来简单明了。现在我的问题是:

  1. 像 laravel 这样的 php 框架可以为我做这些事情吗?
  2. 还有什么我可以用来让人们进行身份验证并确保他们正在执行他们被授权执行的 CRUD 操作的方法吗?
  3. 我正在搜索的关键字是什么,是路由,是 php restful?我要求对此事做进一步的研究。
  4. SPA 是否有任何其他方式可以与 CRUD 操作一起使用并使用 php 以“安全”方式进行身份验证?

我知道上述问题本身不是编程问题,但我不知道在哪里问(因为我觉得我无法传达我想了解的内容/ *这就是上面的关键字问题的原因)。

谢谢

4

1 回答 1

4

基本上有两种基于 URL 的相关“路由”,客户端或服务器端。AngularJS 有 $routeProvider,你可以配置它,所以当位置改变(由 $location 处理)时,客户端模板和使用的控制器也会改变。在服务器端,您可能有将 URL 映射到特定 PHP 文件(或 Java 方法)的重定向或“路由”,在目的地它解析传入的 URL 以获取额外的信息/参数。

  1. 我对 laravel 一无所知,但谷歌搜索 laravel 和身份验证返回了这个看起来很有希望: http ://bundles.laravel.com/category/authentication 我也知道像 Zend 框架这样的东西提供了许多类似的选项来插入一些身份验证代码。
  2. 最终,如果您正在编写 CRUD 操作,您的代码中的某些内容将不得不处理基于角色的代码执行或对数据的访问。
  3. RESTful 是它自己的东西。在非常基本的级别上,RESTful 接口使用 HTTP“动词/词汇”,如 PUT、POST、DELETE、GET(请求标头的一部分,它只是请求中任何正文数据之前的数据)被赋予特殊含义,例如更新条目等。它主要与身份验证问题正交,但如果你做真正的 REST,我不确定是否允许使用 SESSION 来维护身份验证,因为在这种情况下它不是完全无状态的(无论如何只是一个学术论点)。重点是您可以使用 REST 的其他想法或使用“RESTful”的一些实现,它可以用任何语言编写,或者您可以选择不这样做,如何在 REST Web 服务中验证用户身份?)。还要注意,AngularJS 中的 $resource 在 $http 之上提供了一个抽象,专门用于处理 restful 服务。

    恕我直言,您应该搜索两件事

    1 php 安全/身份验证

    2 php hacking/hacks/漏洞

  4. 您可以简单地使用会话编写自己的身份验证机制来跟踪登录用户。http://php.net/manual/en/features.sessions.php就服务器而言,SPA 与传统的 Web 应用程序没有区别,这些只是客户端代码的区别。

您打算实施的任何安全措施实际上都与您对该安全措施的理解一样好。我不会相信来自互联网的其他人的插件来为我处理身份验证,除非时间是一个极其关键的因素并且安全性不是那么重要。您没有提到但我认为值得研究和必要的一件事是 SSL。如果您没有对数据进行加密,则总是有可能发生中间人攻击(有人将明文用户名和密码提交给数据库)或会话劫持(有人获取活动会话的 sessionid 然后使用以充当原始用户)。

我还想提一下,尽管在语言方面有点离题,Java Spring 有一些非常好的东西来处理身份验证和处理对服务和数据的访问。如果安全性是一个主要问题,我可能会强烈考虑运行 Java 服务器(并不是说 Java 从来没有遇到过问题,或者它自动更安全,但是有很多生产代码经受住了时间的考验)。如果您需要大规模分发应用程序,可以使用免费的 Tomcat J2EE Server 或 IBM WebSphere。如果有兴趣搜索 Java、Spring、Hibernate (ORM)、MyBatis、数据访问对象。这些是我能想到的所有部分(一些可选的),您需要在 Java 中组合一个服务层。本页左侧视频中的精彩介绍: http://static.springsource.org/spring-security/site/index.html

SSL 也不是灵丹妙药,但每一层安全都有帮助。

凯文·米特尼克 (Kevin Mitnick) 在他的一本书中说,很多地方都有“硬壳糖果安全”(释义),打破外层意味着你可以得到里面所有糊状的东西。我想银行的任何直接答案都会产生这种类型的安全性。

根据项目的范围,可能需要让安全专业人员对系统进行渗透测试,以确定是否存在漏洞,以便将其插入。

于 2013-07-12T01:29:13.090 回答