2015-02-02 2 views
1

전송할 데이터가 보호되도록 https를 대상으로하는 응용 프로그램이 있습니다 (또는 필요한만큼 보호해야한다고 말하면 안됩니다). 보호/숨기기에 대해 알고 싶습니다) queryString 값입니다. 전통적인 ASP 웹 서비스를 통해 데이터베이스와 GET 및 POST의 혼합을 사용하여 통신하는 jQuery/Javascript 프런트 엔드입니다. 웹 서비스는 JSON을 다시 클라이언트로 보냅니다.쿼리 문자열 값을 표시하지 못하도록하는 방법

프런트 엔드 코드가 변경 될 수 있으므로 POST를 사용하여 모든 사항이 전달되므로 애플리케이션이 완료되고 배포 준비가 테스트됩니다. 쿼리 문자열에서 전달되지 않아야하는 일부 키 값이 있습니다. querystring 값을 검사하거나 스니핑 할 수 없도록 만들 수 있습니까? URL과 쿼리 문자열을 함께 사용하면 원시 JSON에 대한 직접 링크가 제공됩니다. 우리는 이것을 막고 싶습니다. 아마도 jQuery/AJAX 기능을 사용할 수 있습니다. 아마도 일부 서버 IIS 수준의 전술입니까? 나는 웹 서비스 사이트가 따라서 일부 서버/IIS 레벨 전술이 옵션이 아닌 서버를 요청하기 전에 스니핑이 발생했다고 생각합니다.

모든 아이디어/조언이 좋을 것입니다. 감사합니다.

+4

URL의 검색어 문자열 값을 숨길 수 없습니다. 그들은 문자 그대로의 URL입니다. 게시물을 사용하여 숨길 수는 있지만 브라우저 개발자 도구를 사용하여 데이터를 가져올 수 있다고 말한 것처럼 말입니다. 세션 변수를 사용하는 것과 실제로 동일합니다. Id 값은 절대로 변경된 경우 문제를 일으킬 수있는 내용이 아니어야합니다. ID가 전달되면 백엔드는 현재 사용자가이 데이터를 볼 수 있는지 확인해야합니다. 그렇지 않으면 404 페이지 또는 리디렉션. 이것은 문제를 해결할 정확하고 쉬운 방법입니다. – mattfetz

+0

고맙습니다. 나는 이것이 정말로 가능하다고 생각하지 않았다. – Mat41

+0

쿼리 문자열 값을 "숨기는"유일한 방법은 ajax 유형 요청 또는 url이 준 상수로 유지되는 iframe/프레임을 수행하는 것입니다. 둘 다 멋진 URL을 제공하지만, 책갈피가 깨지거나 개발자 도구를 열어 놓은 사람이 무슨 일이 일어나고 있는지 정확히 알 수 있습니다. 요점은 감각 정보가 쿼리 문자열 변수에 넣지 않고 세션 (db 또는 쿠키 기반)에 넣는 경우입니다. – Frank

답변

2

HTTP 헤더를 사용하여 약간 눈에 띄지 않지만 고급 개발자 도구와 로거를 사용하여 여전히 데이터를 검색 할 수있는 서버로 데이터를 보낼 수 있습니다. 예를 들어, this answer은 QueryString을 사용하지 않고 jQuery/Javascript를 사용하여 데이터를 전송합니다.

클라이언트가 이러한 세부 정보를 추적 할 수 없도록 할 수는 없습니다.

제가 개인적으로 제안하는 해결책은 세션 상태를 조사하는 것입니다. 특정 세션 상태에 대한 유효한 데이터 응답 범위를 지정하고 상태가 유효하지 않거나 만료되었을 때 null을 반환하면 데이터에 대한 액세스를 제한 할 수 있습니다. 이 검색은 단 한 번 검색된 후일 수 있습니다. 이 전략은 초기 단계에서 서버에서 전달 된 토큰 또는 코드 생성을 포함하며 문제의 데이터를 요청할 때 사용됩니다.

+0

감사합니다. 당신이 게시 된 링크가 다른 상황에 대한 좋은 하나지만 정말 myn에 적용되지 않습니다 ....... 나는 생각하지 않습니다. 틀린 경우에 나를 정정하십시오. 프리 플라이트 커스텀 헤더가 이런 식으로 사용되었다하더라도 정품으로 식별 된 요청은 여전히 ​​쿼리 스트링 값을 전송할 것이므로 동일한 상황입니다. 가장 좋은 방법은 모든 QueryString을 제거하도록 코드를 변경하는 것입니다 (먼저 수행해야 함). 다시 한 번 감사드립니다! – Mat41

+0

@ Mat41 Zero와 마찬가지로 워크 플로우 초기에 "세션"을 설정하면 유효한 세션이없는 한 URL에서 쿼리 문자열을 보내는 것이 중요하지 않습니다.Classic ASP에는 웹 페이지의 수명 기간 동안 데이터에 액세스 할 수있는 세션 객체가 내장되어 있으며 세션 쿠키를 사용하여이를 수행합니다. – Lankymart

+0

@Lankymart 귀하의 의견에 감사드립니다. 나는 세션 객체와 그 이점을 알고 있지만 이것은 서버 측이다. querystring 값을 보이는/킁킁 거리거나 검사되는 어떤 방식으로도 별도의 주제로 볼 수 없도록하는 원래의 질문. ASP 세션이나 날씨에 어떤 일이 발생했는지에 대한 요청이 유효합니다. 실제 Ajax 요청은 여전히 ​​보내 지므로 gettable입니다. 위대한 충고 후 여기에 몇 가지 연구 querystring 가치가 숨겨진 effetivley 수 있다고 생각하지 않습니다. 최종 요청이 표시되기 전에 수행 된 작업 – Mat41

0

또 다른 대안은 SSL을 사용하거나 데이터를 암호화하여 텍스트 입력 상자와 같이 게시 된 컨트롤에 놓는 것입니다. Microsoft는 ASP.NET 내에서 VIEWSTATE과 유사한 프로세스를 채택했습니다.

+0

입력 해 주셔서 감사합니다. SSL이 사용되기 때문에 URL에 아무 것도 수행하지 않는 데이터 만 암호화하므로 쿼리 문자열 값이됩니다. – Mat41

+0

cntd .. querystring 값을 수동으로 암호화하는 것은 필자가 알고있는 것과는 별도의 옵션이다. 내가 원래의 게시물에서 말했듯이, 코드는 UAT를 거치며 진행될 준비가되어 있습니다. 나는 코드 변경을 요구하지 않는 아이디어를 찾고 있었다. (또는 공식적인 테스트를 요구하지 않는 약간의 변화). 이것이 불가능한 것처럼 보입니다. 정보가 쿼리 문자열로 전달되는 것을 방지하는 가장 좋은 방법은 정보 검색을 피하는 것입니다. 모든 데이터는 처음부터 POST에서 JQuery의 .data를 전달해야합니다. 교훈을 얻었습니다 (팀이 알아야 할 ....) – Mat41

+0

흠. Javascript 코드를 쉽게 작업 한 다음 나중에 연결할 수 있습니다. – Paul

관련 문제