2013-07-12 55 views
0

我創建了一個使用php來處理數據庫查詢和強制身份驗證模式的angularjs應用程序。Angularjs和php作爲後端

當用戶登錄到應用程序時,他在php和php中將用戶數據提取到會話中。然後,angularjs發出一個http post請求到一個php頁面來讀取獲取的數據。 之後,每當用戶要求數據,角度發佈一個帖子到一個PHP頁面。

我正在考慮使用框架以更好的方式進行身份驗證和數據庫查詢。我的安全知識很原始,我擔心我的代碼有錯誤。

做了一個研究後,我發現laravel看起來簡單易行。 現在我的問題是:

  1. 可以php的框架,如拉拉維爾爲我做這些事情嗎?
  2. 有什麼我可以用來讓人們進行身份驗證,並確保他們正在做他們有權做的CRUD操作?
  3. 我在尋找什麼關鍵字,它是路由,它是PHP寧靜?我在問,爲了進一步研究這個問題。
  4. 有沒有其他方式可以在SPA中使用CRUD操作以及以「安全」方式進行身份驗證?

我知道上述問題本身不是編程問題,但我不知道要問哪裏(因爲我覺得我無法傳達我想了解/ *這就是爲什麼上面的關鍵字問題) 。

謝謝

+0

你完全正確,這不符合SO的格式,但我仍然看到並嘗試回答這些問題,所以我會在下面對其進行解釋,但如果這樣會關閉,請不要感到驚訝。此外,我也不是一個安全專家,只是另一個喬程序員(CS在BS),但我會嘗試根據我目前的知識來回答。 – shaunhusain

回答

4

有基本上有兩種相關的「路由」都基於網址,無論是客戶端還是服務器端。 AngularJS具有$ routeProvider,您可以在位置更改(由$ location處理)時配置,客戶端模板和正在使用的控制器也會發生更改。在服務器端,您可能有重定向或「路由」將URL映射到特定的PHP文件(或Java方法),在目標文件中解析傳入的URL以獲取額外的信息/參數。

  1. 我一無所知laravel,但谷歌搜索laravel和認證帶回來這裏面看起來很有希望: http://bundles.laravel.com/category/authentication 我也知道之類的東西Zend框架在一些認證碼堵漏提供了許多類似的選項。
  2. 最終,如果您正在編寫CRUD操作,代碼中的某些內容將不得不處理基於角色的代碼執行或數據訪問。
  3. RESTful是它自己的東西。在一個非常基本的層次上,一個RESTful接口使用像PUT,POST,DELETE,GET這樣的HTTP「動詞/關鍵詞」(請求標題的一部分,它只是在請求中的任何主體數據之前出現的數據)條目等等。它大部分與認證問題是正交的,儘管如果你做真正的REST我不確定是否允許使用SESSION來維護認證,因爲在那種情況下它不是完全無狀態的(無論如何只是一個學術論證)。要點是你可以使用REST的其他想法或者使用一些「RESTful」的實現,它可以用任何語言編寫,或者你可以選擇不這樣做,無論哪種方式,你仍然有控制資源的問題(函數/方法/數據),並且此問題與選擇RESTful或不RESTful(如果由於服務器羣集中的可伸縮性等原因而要保持REST一致,請按照此處的指導How do I authenticate user in REST web service?)進行操作。另外在這裏要注意的是,AngularJS中的$資源提供了一個高於$ http的抽象,專門用於處理寧靜的服務。

    恕我直言,你應該尋找兩件事情

    1 PHP安全/認證

    2 PHP黑客/黑客/漏洞

  4. 您可以使用會話跟蹤簡單地寫自己的身份驗證機制的登錄用戶。 http://php.net/manual/en/features.sessions.php就服務器而言,SPA和傳統的Web應用程序沒有區別,這只是客戶端代碼的差異。

您打算實施的任何安全性的確與您對該安全性的理解一樣好。我不會相信互聯網上的其他人的插件可以爲我處理身份驗證,除非時間是一個非常關鍵的因素,安全性不是那麼強。有一件事你沒有提到,但我認爲這是值得研究和必要的,因爲任何這些真正安全的是SSL。如果你沒有加密你的數據,那麼總有一種可能性發生在中間人攻擊(某人獲得提交給數據庫的明文用戶名和密碼)或會話劫持(某人正在獲取活動會話的sessionid,然後使用即充當原始用戶)。基本上,我建議你不斷研究最佳實踐,並親自查看你打算使用的任何代碼,以確保你瞭解它的工作原理以及它提供的安全性。

我也想提一下,儘管主題語言比較明智,但Java Spring在處理身份驗證和處理服務和數據訪問方面有一些非常好的東西。如果安全是一個主要問題,我可能會強烈考慮運行一個Java服務器(並不是說Java從來沒有遇到問題,或者它自動更安全,但有很多生產代碼能夠經受住時間的考驗)。如果您需要大規模分發應用程序,則有免費的Tomcat J2EE服務器或IBM WebSphere。如果有興趣搜索Java,Spring,Hibernate(ORM),MyBatis,數據訪問對象。這些都是我可以想到的所有部分(一些可選)需要將Java服務層放在一起。在本頁左側的視頻中有良好的介紹: http://static.springsource.org/spring-security/site/index.html

另外SSL不是銀色的子彈,但是每層安全都有幫助。

凱文米特尼克在他的一本書中說過,很多地方都有「硬殼糖果安全」(釋義),在那裏打破外層意味着你可以在裏面找到所有的糊狀善良。任何直接回答我會銀行將導致這種類型的安全。

根據項目範圍的不同,可能需要安全專業人員對系統進行滲透測試,以確定是否存在漏洞以便插入它們。

相關問題