JavaScript Securty : AJAX 호출 사용자의 화면 해상도를 기록하면 가짜 번호를 방지 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/908283

문제

이것은 JavaScript 보안 질문입니다. 페이지가 1024 x 768과 같은 컴퓨터의 화면 해상도를 찾아서 Ajax 호출을 사용 하여이 데이터를 DB에 로그인한다고 가정합니다.

실제로 가짜 데이터가 DB에 입력되는 것을 방지하는 방법이 있습니까? HTML 또는 JavaScript가 무엇을 하든지 사용자는 코드를 리버스 엔지니어링하여 일부 가짜 번호가 DB에 입력되거나 완전히 발생하지 못하게하는 방법이 있습니까? (100% 보안).

업데이트: 또는 비슷한 상황에서 ... 간단한 JavaScript 게임을 작성하면 ... 사용자가 Ajax의 점수를 다시 보내고 점수에 대해 거짓말을하는 방법이 있습니까?

도움이 되었습니까?

해결책

의사 소통하는 사용자가 악의적이라는 가정으로 시작하면 아니요. 그들이 당신을 통과하는 데이터를 제어하기 위해 할 수있는 일은 없습니다. 확실히 100% 확실하지는 않습니다. 최악의 경우 네트워크 도구를 사용하여 "올바른"컨텐츠를 원하는대로 다시 작성하거나 대체 할 수 있습니다.

캐주얼 악의를 방지하려면 코드 및/또는 데이터를 난독 화하거나 암호화 할 수 있습니다. 이것은 결정된 공격자를 막지 않습니다.

실제로 실제 사용자를 신뢰하지만 다른 사람들이 그들을 가장하려고 할 것이라고 의심한다면, 동적 카나리아와 같은 다른 기술을 사용할 수 있습니다. 그들로부터왔다. (또는 당신은 중간의 사람의 공격에 맞지 않지만, 이봐, 그게 SSL의 일입니다.)

다른 팁

사용자가 JavaScript에서 좋아하는 숫자를 보내지 못하게하는 것은 불가능합니다.

당신이 할 수있는 최선은 서버 측에서 일종의 검사를 수행하여 다시 전송 된 숫자가 사실적인 해결책처럼 보이도록하는 것입니다.

왜 누군가가 처음에 그 숫자를 스푸핑하는 데 시간을 보내는 지 잘 모르겠습니다.

그래 너가 옳아. 클라이언트 측 코드를 사용하고 있으므로 사용중인 암호화 또는 난독화물에 관계없이 사용자의 컴퓨터 (및 사용자)에게 어떤 방식 으로든 알려야합니다. 주위에 방법이 없습니다.

해상도의 경우 기본적으로 유효한 해상도인지 판단하는 것은 불가능합니다. 저의 해상도는 일반적으로 서버로 5120 x 1600으로 전송됩니다. 이는 매우 비현실적으로 보이지만 2 개의 화면은 종종 1으로 전송되기 때문입니다. 그렇지 않으면 화면 해상도 및 화면 구성에는 다양한 가능성이 있습니다. D는 아마도 적은 수의 유효한 것을 제거 할 것입니다.

게임 점수의 경우 점검이 더 복잡해지는 추가 점검을 수행 할 수 있습니다. 게임 전체에서 여러 점수의주지를 보내고 수신 된 점수가 유효하도록 x 번호를 요구하는 것과 같은 것들. (즉, 200-300, 400-500, 700-800 사이의 최종 점수를받은 다음 1000의 최종 점수를 받아야합니다.) 최종 점수의 경우, 한 번만 사용할 수 있거나 포함 할 수있는 암호화 된 값을 가질 수도 있습니다. CRC가있는 일부 데이터. 기본적으로 결국, 특히 높은 점수의 경우 점수 이외의 다른 데이터를 수신해야합니다.

Dok과 자신의 의견에 대해 자세히 설명함으로써 답을 시도하려면, 더 저렴한 무언가를 얻거나 MMporg를 더 많이 얻기 위해 온라인 비즈니스이든간에 응용 프로그램을 조작하는 것 사이에는 분명한 차이가 있습니다. , 인터페이스를 잘못 렌더링하고 해당 특정 (해커?) 사용자의 전체 사용자 경험을 감소시키는 방식으로 조작하는 것보다 조작하는 것보다.

사이트의 다른 측면에 초점을 맞추는 데 시간이 더 좋습니다. 내 사이트의 사용자가 HTML을 조작하여 기계에서 재미있게 보이도록 권장하지는 않지만 서버 출력을 모두 꺼내서 스스로 아프지 않도록 내 서버 출력을 난독 화하지는 않을 것입니다. 귀하의 경우, DB를 사용하여 사전 정의 된 안전 값에 대한 범위를 확인하여 사용자가 '허용 된'해상도로 보는지 확인하면 응용 프로그램에 불필요한 부담이 발생하고 시간이 걸립니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top