我有一個Symfony框架的應用程序,我擁有特定權限的用戶,如果他們沒有權限訪問頁面,我必須阻止他們,但用戶仍然可以通過修改URL訪問頁面。例如,我有這個URL,他們已經在其訪問權:如何提高我的應用程序安全性?
dialog/campany/sms/fid/setting/new
和他們沒有訪問這個網址的權利:
dialog/campany/mail/fid/setting/new
但可以通過remplacing sms
通過mail
。
我有一個Symfony框架的應用程序,我擁有特定權限的用戶,如果他們沒有權限訪問頁面,我必須阻止他們,但用戶仍然可以通過修改URL訪問頁面。例如,我有這個URL,他們已經在其訪問權:如何提高我的應用程序安全性?
dialog/campany/sms/fid/setting/new
和他們沒有訪問這個網址的權利:
dialog/campany/mail/fid/setting/new
但可以通過remplacing sms
通過mail
。
你必須檢查你的security.yml是如何配置的,並從那裏控制訪問。如果您需要關於它的信息,您可以訪問:http://symfony.com/doc/current/security/access_control.html。
此外,您可以控制訪問權限,從而在給定訪問給定頁面之前製作檢查用戶憑證的功能。
假設ROLE_SMS
只能以dialog/campany/sms/
和ROLE_MAIL
訪問只能到dialog/campany/mail/
在應用程序/配置/ security.yml訪問,你應該有:
security:
access_control:
- { path: ^/dialog/campany/sms/, roles: ROLE_SMS }
- { path: ^/dialog/campany/mail/, roles: ROLE_MAIL }
如果你只是想限制/新的URL,您可以將路徑更改爲:
- { path: ^/dialog/campany/sms/fid/setting/new$, roles: ROLE_SMS }
- { path: ^/dialog/campany/mail/fid/setting/new$, roles: ROLE_MAIL }
謝謝你的回答,但是這個角色必須在某個地方定義,我在哪裏定義它們? –
你可以在'security.yml'中定義你的角色。如果您使用FOSUserBundle,請查看他們的文檔,瞭解如何影響角色,如果沒有,您可以在這裏找到基本配置:http://symfony.com/doc/current/security.html – progg
您嘗試了什麼?你的問題也缺乏關於你的配置和代碼的任何細節。 – Gerry
拒絕訪問的標準方式是檢查每個訪問的用戶憑據,如果他們沒有正確的憑據,則重定向到失敗頁面。你現在怎麼阻止他們? – halfer