2012-02-29 8 views
-1

에 응용 프로그램을 개발 중입니다. 이제 나는 허가에 대해 걱정하고있다.사용자 권한 및 소프트웨어 보안

페이지 권한 추가가 필요합니다. 페이지 추가, 페이지 편집, 페이지 삭제, 보고서 인쇄 등 많은 사용자가있을 수 있으며 시간 경과에 따라 응용 프로그램이 커질 수 있습니다. 내가 ACL을 구현하는 경우

더 나은 나를 위해 여부를

어떤 제안 나를 위해 이상적이 될 수 무슨 그.

+1

귀하의 질문은 너무 광범위합니다. 보안이나 사용 권한에 대해 알고 싶습니까? 내 말은 : 완벽한 권한 시스템과 끔찍한 보안을 가질 수 있다는 것입니다. 당신은 강력한 보안과 가난한 허가 시스템을 가질 수 있습니다 ... 그들은 두 가지 별개의 주제입니다. –

+0

그래서 누군가가 당신에게 "뭔가를 작성하십시오"여기에, 왜냐하면 모든 페이지에서 구글은 "뭔가를 완료하지 않았기 때문에"를 원했을까요? 이것이 필요한 자유 작업의 양을 알고 있습니까? 또한 "be"는 "b"보다 쓰기가 훨씬 어렵지 않습니다. 좋은 인상을주지 못하기 때문에 이런 종류의 textspeak을 피해야합니다. –

+0

그에 따라 내 게시물을 편집했습니다 – nbhatti2001

답변

3

먼저, 보안이라는 용어를 사용하여 SQL 삽입 방지, XSS 공격, 입력 검증, 필터/위생 값 확인, 동적으로 생성 된 SQL 명령 처리 등의 용어를 사용합니다. (JSON 또는 HTML 텍스트 또는 HTML 속성의 경우) 적절히 이스케이프 처리하는 등을 처리하십시오. 잘 이해하면 이 아닌이 무엇인지 묻고 있습니다. 당신이 제공 또는 사용자를위한 기능에 대한 액세스를 거부 할 경우

액세스 제어 또는 권한 시스템

이다. 그것은 안전 할 수도 있고 그렇지 않을 수도 있습니다. 권한이없는 사용자를 거부하면 기능에 대한 액세스가 "보안"처럼 들릴 수 있지만 혼란을 피하기 위해이 특정 단어를이 컨텍스트에서 사용하지 않을 것임을 이해합니다.

이제 답 :


난 강력하게 당신은 여러분의 필요에 몇 가지 기본 컨트롤러 클래스를 생성하는 것이 좋습니다. 다음 블로그 게시물을주의 깊게 읽으십시오 (짧고 유용합니다) : http://philsturgeon.co.uk/blog/2010/02/CodeIgniter-base-Classes-Keeping-it-DRY

사용자가 제대로 인증되었는지 (로그인 한) 확인하는 코드는 필수입니다. 사용자가 로그인하지 않은 경우 홈 페이지 또는 로그인 페이지로 리디렉션하십시오.

세분화 된 제어를 위해, 당신은 users 테이블을 사용하여 데이터베이스에 ACL을 만들 플러스 수 있었던 users 표는 사용자 데이터를 포함 할

actions 테이블, 플러스 acl 테이블 (아이디, 이름, 로그인, 비밀번호 등)

actions 테이블에는 ID 필드와 애플리케이션에 가장 적합한 것을 포함하는 필드가 하나 이상 있습니다. 컨트롤러 클래스 이름 (URL의 첫 번째 부분, 예 : "제품"), 전체 "제품"컨트롤러에 대한 액세스 권한 부여 여부. 또는 컨트롤러 클래스와 메소드 이름 (예 : "products/add"및 "products/delete")의 첫 번째와 두 번째 부분을 모두 포함 할 수 있습니다.

actions 테이블을 결정하는 것이 가장 중요한 단계입니다. 그것에 대해 아주 잘 생각하고, 당신의 필요 (당신의 "진정한"필요성)의 균형을 잡으십시오 ... 나는 각 행동마다 그 진입이있는 시스템을 개발했습니다. 좋지만, 작업으로 유지되어야합니다.입니다.

actions 테이블의 매우 유용한 열은 사람이 읽을 수있는 동작 설명입니다.

그러면 acl은 사용자 ID의 열과 액션 ID의 다른 열일뿐입니다.

users 테이블의 "마스터"부여/거부 액세스 필드는 모든 사용자 권한을 삭제하지 않고 나중에 복원해야 할 필요없이 특정 사용자의 액세스를 일시적으로 거부하려는 경우에 유용합니다.

데이터베이스 테이블과 "컨트롤러/메소드"또는 "액션"전략을 잘 정의하면 기본 컨트롤러 클래스에 사용자가 요청한 작업을 실행할 수있는 권한이 있는지 확인하는 기능을 쉽게 코딩 할 수 있습니다.


이것은 기본입니다. 내 시스템에는 각 사용자에 대한 작업을 승인/거부 할 수있는 사용자 관리 인터페이스가 있습니다 (ExtJS 트리와 확인란 사용). 이러한 작업 중 하나는 자체 사용자 관리입니다. 한 단계 더 나아갔습니다. 사용자 관리에 액세스 할 수있는 사용자는 자신이 액세스 할 수있는 작업 만 다른 사용자에게 "위임"(권한 부여/거부) 할 수 있습니다.

시스템에는 여러 모듈과 기능이 있습니다. 인터페이스에는 사용자가 액세스 권한이없는 것은 표시되지 않습니다. 따라서, 단 하나 또는 두 개의 모듈 만 볼 수있는 사용자가 있으며 다른 모듈이 있다고 상상조차하지 못합니다.

이 모든 것을 관리하려면 더 많은 작업이 필요하지만 그만한 가치가 있습니다.

로그 각 액세스 권한이 부여되어 누구가 무엇을 언제했는지 추적 할 수 있습니다. 이 로그 기능은 사용자가 작업을 수행 할 수 있도록 허용하거나 거부하는 기본 컨트롤러 "마스터 기능"을 가지고 있기 때문에 매우 쉽게 추가 할 수 있습니다.

도움이 되었기를 바랍니다. 나는 단지 나를 위해 일한 (그리고 작동하는) 비트를 공유했습니다 ...

+1

놀랍지 만 놀라운 답변을 얼마나 자주 발견 했나요? 평범한 ... 질문. –