2010-06-01 7 views
2

웹 양식 컨텍스트에서 사용자 지정 라우팅을 사용하고 있습니다. 물음표 문자가있는 제목 (맞춤 경로의 일부)이 있습니다. 이 텍스트를 URL 인코딩 ("질문?")하고 내 경로로 전달하면 HTTP 오류 코드 400이 표시됩니다. URL 인코딩 된 텍스트가 라우팅 관리자를 혼란스럽게합니다.URL 인코딩 및 라우팅?

누군가이 상황에 대한 설명과 설명을 제공 할 수 있습니까? 그 외에도이 라우트 데이터를 URL 인코딩 할 필요는 없지만 문제가되는 문자는 제거한다고 생각합니다. URL 디코딩/인코딩을 사용하지 않을 경우 보안 위험이 있습니까? 그리고 문제가되는 문자는 무엇입니까? 목록이 유용 할 것입니다.

감사합니다.

업데이트 : 사용자 지정 경로의 쿼리 문자열에 % 문자가 허용되지 않은 것 같습니다. 이 문제에 대한 좋은 의견을 기다리십시오!

+0

오해의 여지가 있지만 절대적으로 안전하려면 발신 측에서 base64로 인코딩하고 수신 측에서 base64로 디코딩 할 수 있습니까? – barrycarter

+0

@Barry는 일반 텍스트 사용자 친화적 인 경로를 갖는 목적을 무효화합니다. –

답변

1

여기에 MS가 말하는 내용은 UrlEncode() 입니다. 'URL 인코딩을 사용하면 모든 브라우저가 URL 문자열에 텍스트를 올바르게 전송합니다. 물음표 (?), 앰퍼샌드 (&), 슬래시 표시 (/) 및 공백과 같은 문자는 일부 브라우저에서 잘 리거나 손상 될 수 있습니다. 따라서 이러한 문자는 요청 문자열의 브라우저에서 문자열을 다시 보낼 수있는 태그 또는 쿼리 문자열로 인코딩해야합니다. '

또한 쿼리 매개 변수 만 인코딩해야합니다. 그렇지 않으면 결과가 문제를 일으킬 수 있습니다. 이 링크

http://www.contoso.com/articles.aspx?title=ASP.NET+Examples 

이 있고 전체를 인코딩 예를 들어, 당신은이 오면 내가 ASP.net 라우팅을 사용 http://msdn.microsoft.com/en-us/library/zttxte6w.aspx

참조 자세한 내용 들어

http%3a%2f%2fwww.contoso.com%2farticles.aspx%3ftitle%3dASP.NET%2bExamples 

를 얻을 수 있습니다 버전 4.0. 다음은 샘플 코드 http://weblogs.asp.net/scottgu/archive/2009/10/13/url-routing-with-asp-net-4-web-forms-vs-2010-and-net-4-0-series.aspx입니다. 링크를 아주 쉽게 조작 할 수 있습니다.

업데이트 : Microsoft는 라우팅에 문제를 일으킬 수있는 IIS7을 일부 변경했습니다. 따라서 Application Pool의 "Managed Pipeline Mode"설정을 Integrated에서 Classic으로 변경하십시오.

+0

전체 경로를 인코딩하지 않고 쿼리 매개 변수에서 URL 인코딩을 사용하는 쿼리 및 포인트 만이 &, % 및 기타 알 수없는 몇 가지 심볼에 대해 작동하지 않습니다. 흥미롭게도, 내가 & webdev에서 인코딩 할 때 IIS 7에서는 작동하지 않지만 webdev에서는 작동하지만 IIS 7에서는 작동하지 않습니다. 나는 그것이 물음표라고 생각합니다. 내 매개 변수에서 해당 문자를 제거하여 일시적으로 해결했습니다. –

+0

어떤 앱 풀 설정을 사용하고 있습니까? – Thea