2013-04-11 4 views
-1

나는 내 자신의 CMS를 가지고 있으며 구현하고 연구해야하는 보안 옵션을 탐색 중입니다.PHP - 내 CMS 보안

모든 CMS 페이지는 세션에 저장된 사용자 ID를 기반으로 사용자 권한을 확인합니다. 이 페이지 안에있는 양식을 "보안"하는 것이 얼마나 중요하다고 생각 했습니까? 내 말은 사용자가 SQL 문을 쓸 수있는 기회를 가지므로 SQL 인젝션 사용을 원한다면 정말 어렵지 않다는 것을 의미합니다 ...

제 생각에는 세션 하이재킹에 대한 + 보호 된 보안 만 있습니다. , 그게 맞습니까? 아니면 제가 빠진 것이 있습니까?

앞 페이지의 양식, 쿼리 문자열 등도 보호됩니다.

감사합니다.

+1

양식으로 "보안"을 정의하십시오. 나는 일반적인 대답을 쓸 것이고, 당신의 세부 사항이 올 때, 나는 구체적인 것을 추가 할 것이다. –

+0

정말로 빠른 입력에 감사드립니다.아직 구현하지는 않았지만 로그인 페이지의 측면에서 탈출 html 문자, 따옴표 및 parametrizing SQL 문에 대한 생각을 메신저 확보. 세션 하이재킹에 대해 잘 모르기 때문에 배워야합니다. 나는 누군가가 내 CMS 페이지에 대한 액세스 권한을 얻을 수 없다는 것을 절대적으로 막기를 원한다. – Enn

답변

0

웹 앱 보안은 끝이없는 작업입니다. 사람들은 도구와 방법의 조합을 통해 매일 (아주 문자 적으로) 활용할 벡터를 찾습니다.

  • 사용자, 특히 (페이지에 그들이 원격 영구적으로를 주입 할 수있는
  • 사용자가 아닌 사람들 누군가로 로그인 할 수있는 : CMS를 구축 할 때 특히 조심해야 돼) 위의와 결합
  • 사용자 수정하거나 그들이 이러한 모든 양식 제출, 또는 더 일반적으로, 유저 데이터 항목과해야 할

에 액세스 안되는 데이터베이스의 내용을 추출 할 수있는. 그것은 하나의 간단한 교훈으로 귀결됩니다. 절대로 을 신뢰하십시오.

가장 먼저 걱정해야 할 것은 가장 위험한 SQL 주입입니다. 대부분의 공격은 매개 변수가있는 쿼리 (TRUE 매개 변수가있는 쿼리)를 사용하여 막을 수 있지만 대부분의 공격이 피해를 입을 수 있습니다 .PDO가 기본적으로 에뮬레이션하고 설정 플래그가 켜져 있습니다 진정한 매개 변수화). 이렇게하면 SQL 관련성이있는 대다수의 위생 처리가 효과적으로 수행되어 "현명한 위생 처리"가 유지됩니다 (즉, 날짜가 실제로 날짜인지 확인). 이것은 사람들이 일차 SQL 인젝션 (직접 입력)이라고 부르는 것을 방지합니다.

두 번째 주문이 더 어렵습니다. 데이터베이스에 저장 한 다음 다른 명령문에서 실행됩니다. CISCO 가이드에는 물건이 어떻게 발생하는지에 대한 좋은 아이디어가 있습니다.

대다수의 대다수의 스크립트 키디를 SQL로 격파하는 것입니다.

콘텐츠 필터링 측면에서 블랙리스트보다는 화이트리스트를 사용하고 싶습니다. 신뢰할 수 없거나 인식 할 수없는 모든 것을 제거하십시오. HTML과 관련해서는 HTMLPurify라고하는 멋진 도구가 있습니다.

내 상사가 실수하지 않도록하십시오. 컨트롤러가 실행 된 후에 페이지를 렌더링하기 전에 세션을 즉시 확인하십시오.

+0

정보를 제공해 주셔서 대단히 감사합니다. 나는 그것을 사용하려고 생각하고 있었지만, 다음과 같은 이유 때문에 사용하지 않기로 결정했다. - 사용자 (편집자 만이 이것을 할 수있는 기회를 가질 수 있기 때문에 더 많은 편집기라고 말할 수있다.) html을 쓸 수있다. 코드 (예 : 페이지 레이아웃)를 CMS 데스크에 저장하십시오. 내 생각에 편집자/관리자는 문자 그대로 무엇이든 할 수 있으며, 심지어는 클릭 몇 번으로 사이트를 삭제할 수도 있습니다. 어쨌든 편집자가 사이트를 완전히 제어 할 수 있다면 html을 사용하는 이유는 무엇입니까? – Enn