2013-06-28 1 views
18

매크로가 자유롭게 실행될 수 있다면 문제가되는 사이트를 설계하고 있습니다.자바 스크립트가 버튼 클릭을 시뮬레이션 할 수 있습니까?

버튼 클릭으로부터 HTTP 요청을 시뮬레이트하여 만든 매크로를 멈추는 방법을 생각해 봤지만 버튼을 "클릭"하고 일반 사용자가 계속 진행하는 자바 스크립트를 삽입 할 수 있다면 헛된 일입니다. .

버튼 클릭을 시뮬레이트하면 버튼이 눌려지고 버튼이 들어있는 Form이 그 버튼과 연결된 PHP 코드로 실행됩니다.

논리는 자바 스크립트에서이를 수행 할 수 있다고 말하지만 확실하게 알고 싶습니다. 어떤 의견을 보내 주셔서 감사합니다! 당신이 할 수있는

~ 앤드류

+0

매크로가 무엇을 의미합니까, 양식에 자바 스크립트 코드를 삽입한다는 의미입니까? 아니면 [이] (http://blog.creativeitp.com/posts-and-articles/javascript/javascript-injection-form-editing/) 무슨 뜻이야 –

+0

예 누군가 내 사이트에 자신의 자바 스크립트를 추가 한 경우 내 사이트의 버튼을 누르면 시뮬레이션됩니다. 나는 그들이 그것을 할 수 있는지 (능력이 있는지) 알고 싶다. – AndrewB

+1

그들은 항상 HTTP 요청을 보내는 것을 포함하여 페이지에서 무엇이든 할 수있는 자바 스크립트를 삽입 할 수 있습니다. 당신이 그것을 피할 수있는 방법은 없습니다. –

답변

36

버튼을 프로그래밍 방식으로 항상 클릭 할 수 있습니다. 예를 들어, 당신은이 같은 양식의 일부 페이지가있을 수 있습니다 : 디버그 cosole을 열고 입력 만 가능한 것보다

<form> 
    <input type="text" /> 
    <button>Do something</button> 
    <input type="submit"> 
</form> 

document.getElementsByTagName('button')[0].click(); 
버튼을 클릭합니다

, 또는

document.getElementsByTagName('input')[1].click(); 

양식의 제출 버튼을 클릭하거나

document.forms[0].submit(); 

버튼을 클릭하지 않고 양식을 제출하십시오.

클라이언트에서 JavaScript 코드를 마스터 링하지 못하게 할 방법이 없습니다. 원하지 않는 사용자 작업을 방지하기 위해 서버 쪽에서 몇 가지 유효성 검사를 추가해야합니다.

+1

간결한 답변을 주셔서 감사합니다. – AndrewB

+0

예, 좋은 대답입니다. – Yster

2

유일한 것은 서버의 요청을 확인합니다.

일단 페이지를 클라이언트로 넘기면 사용 방법을 기술적으로 제어 할 수 없습니다. 당신은 예를 들어 무엇을 할 수

, from :

는 자바 스크립트 게임을한다고 가정 해 봅시다. AJAX를 사용하여 플레이어의 점수를 서버 로깅을 위해 으로 보냅니다. 스크립트를보고 악의적 인 사용자가 AJAX 코드 을 실행하여 5,000 점을 얻었더라도 1,000,000 점을 보낼 수 있습니다.

자바 스크립트에서 이러한 일이 발생하는 것을 막을 수는 없습니다. 그러나 서버 측에서 AJAX 요청을 인증하는 방법이 있어야합니다. 해커가 알 수없는 자바 스크립트에 보안 "토큰"을 전달할 수 있습니다.

+0

나는 자주 변경되는 서버 측 변수가 있다고 생각했습니다. 변수는 사용자의 입력에 대한 소금입니다. 예를 들어, 점수가 1000 점이고, sha512 암호화를 사용하고, 서버 측 변수에 해당하는 숫자를 소금으로 처리 한 다음 예상되는 내용을 알고 있습니다. 코드가 맞으면 점수를 업데이트하고 그렇지 않으면 점수를 업데이트하십시오. 분명히 이것이 모두 PHP 측면이라면 점수를 변경하지 않고 버튼을 클릭하여 점수를 제출할 수 있습니다. 그러나 나는 심지어 자신의 점수를 제출하는 것은 불가능하기를 원한다. (이 경우) – AndrewB

+0

나는 조금도 여기에서 희망을 가지지 않는다고 생각한다. CAPTCHAS를 피하려고한다. 그래도 노력에 대한 엄지 손가락을 줄께! – AndrewB

+0

모바일 앱으로 가다 보면 데이터 전송을 암호화하고 안전하게하기 위해 ssh 라이브러리를 사용하기도합니다. 어쩌면 비슷한 일을 할 수 있습니다. –

관련 문제