내 매개 변수를 암호화하므로/product/update/1과 같은 링크가/product/update/cdsk45kdi340kd0wlw0 또는 비슷한 것으로 표시됩니다. 컨트롤러와 뷰에서 암호화하고 해독해야합니다. 이것에 대한 최선의 접근 방법은 무엇입니까? 어떤 도움을 주셔서 감사합니다.내 ZF2 응용 프로그램에서 ZF2 암호화 매개 변수
답변
에 봐. 제품마다 임의의 토큰을 생성합니다. 이 토큰을 제품 ID (및 다른 모든 특성)와 함 2 데이터베이스에 저장하십시오.
임의의 문자열을 토큰으로 생성하려면 Zend\Math\Rand
을 사용할 수 있습니다. Rand::getString(10);
은 임의의 10 자 문자열을 제공합니다. 데이터베이스에 제품을 저장할 때 모든 제품에 임의의 문자열을 생성하십시오. 그런 다음 컨트롤러에서 식별자 (ID)를 기반으로 제품을 얻지는 않지만 토큰을 기반으로합니다.
고유성을 확인하십시오. 임의의 함수 대신에 uniqid()를 사용할 수도 있습니다. – dualmon
물론, 좋은 지적입니다. 적어도 데이터베이스에 고유 제한 조건을 설정하고 토큰이이 L 존재하는지 점검하십시오. –
랜덤을 생성하는 대신 ID와 이름을 함께 base64 또는 md5로하면 DB에 아무것도 저장하지 않아도됩니다 (검색 할 다른 DB 호출). 이것은 외부 고유 URL이 일반적으로 처리되는 방법입니다. 사용자별로 고유해야 할 경우 암호화하거나 인코딩하는 문자열에 사용자 이메일 및/또는 ID를 포함시킬 수 있습니다. –
메이크업 경로가 여기에 요점은 당신이 URL을 추측하는 사용자를 방지 할 것입니다이
'product' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/product/update[/:hashedid]',
'constraints' => array(
'hashedid' => '[a-zA-Z0-9-_\.]+',
),
'defaults' => array(
'controller' => 'Index',
'action' => 'index',
),
),
),
같은 컨트롤러
$hashedid = $this->params()->fromRoute('hashedid', 0);
$id = $this->dehash($hashedid);
답장을 보내 주셔서 감사합니다 ...하지만 ID를 해시하는 데 사용하려면 어떻게해야합니까? 나는 해시를 위해 소금을 사용하는 것을 선호 할 것이다 ... – cwhisperer
@cwhisperer 소금 소리가 좋기를 원하는대로 사용할 수있다. http://stackoverflow.com/a/1289114/3223896 – Skaza
감사합니다. 유감스럽게도 base64_encode는 암호화 된 문자열에 슬래시 (/)를 생성하여 내 경로를 만들고, 다시 검사 한 제약 조건을 무효로 만듭니다. – cwhisperer
- 1. zf2 : SharedEventManager에서 컨트롤러로의 매개 변수
- 2. ZF2 : 컨트롤러에서 URL 매개 변수 가져 오기
- 3. zf2 도우미에서 전달 변수
- 4. ZF2 setPartial 하위 메뉴에 매개 변수 추가
- 5. ZF2
- 6. zf2
- 7. ZF2
- 8. 내가 이렇게 내 ZF2 응용 프로그램에서 PhpRenderer 클래스를 확장 한
- 9. zf2 동적으로 언어 변경
- 10. ZF2 의존성 삽입
- 11. zf2 mvc 외부의 Zend_Db zf2 모듈 사용
- 12. ZF2 번역
- 13. ZF2 EdpModuleLayouts
- 14. 이 문서에 따르면 ZF2
- 15. Zf2 TableGateway
- 16. ZF2 어떻게
- 17. ZF2 - 루프 루프 내 모델에서
- 18. ZF2 응용 프로그램 자동로드 파일
- 19. zf2 모듈보기 경로 확인
- 20. ZF2 - CONCAT
- 21. ZF2 ServiceManager
- 22. SQL_CALC_FOUND_ROWS + zf2
- 23. zf2 FIELDSET은
- 24. 이 ZF2
- 25. ZF2 AuthenticationService
- 26. ZF2 전략보기
- 27. ZF2 : 데이터베이스
- 28. 교리와 ZF2-
- 29. flashmessenger의 ZF2 네임 스페이스
- 30. 하는 ZF2 모듈
"암호화"를 사용하는 이유를 설명 할 수 있습니까? uuid, slug 또는 hash가 충분하지 않은 이유는 무엇입니까? –
난 그냥 사용자가 ID를 추측하고 URL을 호출 할 수있는 피하기 위해 ... 해시 좋은 대안이 될거예요 줄 수 있습니까? – cwhisperer