2010-12-03 11 views
5

회사의 주문을 관리하는 PHP 애플리케이션을 개발 중입니다. 주문을 보려면 URL은 현재 /orders/view/3502입니다.URL의 암호화 된 데이터

URL에 주문 ID 번호를 표시하고 싶지 않아서 CodeIgniter의 암호화 라이브러리를 사용하여 URL의 ID를 암호화했습니다. URL (암호화 후)은 /orders/view/AaffGdQQ처럼 보입니다.

내가 겪고있는 문제는 암호화 된 ID에 슬래시 또는 더하기 기호가 포함되어있어 URL에 올바르게 작동하지 않는 경우가 있습니다. CodeIgniter는 슬래시를 기반으로 URL을 읽습니다. 따라서 암호화 된 ID에 슬래시가 있으면 2 개의 변수가 아닌 하나의 값으로 읽습니다. 또한 더하기 기호는 URL의 공백으로 해석됩니다.

내 질문은 어떻게 ID를 암호화하고 문자열에 더하기 기호 또는 슬래시가 포함되어 있지 않은지 확인하는 것입니다.

EDIT : 암호화 된 ID에 슬래시 또는 더하기 기호가 포함되어 있는지 확인한 후 다시 암호화합니다. 어떤 이유로 ID가 암호화 될 때마다 ID가 다릅니다. 따라서 ID가 작동합니다.

+0

URL에 주문 ID를 표시하는 것이 잘못된 이유는 무엇입니까? –

+0

나의 상사는 '보안상의 이유'때문에 그것을 원하지 않습니다. –

+0

사용자가 실제로는 주문을 볼 수있는 권한이 있는지 확인하고, 난독 처리가 아닌 주문을 보호해야합니다. – newbie

답변

8

또한 base64_encode()를 사용할 수도 있습니다. 그렇게하면 더 오래 걸리고 "더 안전하게"보일 것입니다. 또한 난독 화 레이어를 추가합니다.

+0

사용자가 디코딩 할 수 없기를 바랍니다. –

+0

예, 이미 codeignighter :-)로 암호화하고 있습니다. 이렇게하면 URL에서 사용할 수없는 암호화 된 문자열에서 해당 문자가 제거됩니다. 또한 암호화 된 문자열을 난독 화합니다. – Jack

+0

아, 암호화 된 데이터의 base_64를 의미하셨습니까? 좋은 생각이야. –

0

암호화에서 사용하지 않는 일부 문자를 찾아 해당 문자를 바꿉니다. URL을 사용할 때이를 취소하십시오.

+0

나는 이것을 실제로 생각하고 있었다. 또는 암호화하여 다시 암호화합니다. ID를 암호화 할 때마다 다릅니다. –

1

울퉁불퉁 한 데이터를 urlencode()으로 전달하면 문제가 해결 될 수 있습니까? 그런 다음 CodeIgniter가 수행하기 전에 데이터를 가로 채고 urldecode()을 실행해야합니다.

빠른 아이디어, 행운을 빈다.

+0

URL을 부 풀리지 않습니까? 글쎄요, 조금만 그렇기 때문에 가능할 수도 있습니다. – thejh

+0

bloating에 문제가 있습니까? 스택 오버플로가 아주 잘 풀립니다 ... 길이가 5 문자 씩 늘어날 수 있으므로 너무 부 풀리지 않아야합니다. – Blender

+0

나는 이것을 시도했지만, URL에있는 더하기 기호는 여전히 공백으로 해석되며, urlencoded 슬래시는 여전히 슬래시이다. –