본문 바로가기
프로그래밍/WEB HACKING

[WEB HACKING] javascript 이벤트 / php 개념 및 슈퍼 글로벌 변수

by B T Y 2017. 8. 17.
반응형

javascript 이벤트 /  php 개념 및 슈퍼 글로벌 변수에 대해서 정리한다.



javascript
 
  - 웹 브라우저에서 요소, 속성 등을 제어하기 위한 수단
  - 움직이는 애니메이션 효과, 소켓 통신, ...
 
 
이벤트
 
  - 글로벌 속성
 

<!doctype html>
 
<html>
 
<head></head>
 
<body>
        <script>
                function event_handler() {                                                              // 실행될 함수 정의
                        alert('onmouseover!');
                }
        </script>
        <p onmouseover=event_handler()> before mouseover </p>        // 해당 이벤트에 실행될 함수를 지정
</body>
 
</html>



( <p> 태그를 이용해서 before mouseover라는 문단을 하나 작성해준다 )


* <p> 태그는 block 속성을 가지고 있기 때문에 해당 라인을 모두 차지하게 된다.



( 이벤트 중에서 커서를 가져가면 이벤트가 발생하는 onmouseover를 이용해서 before mouseover에 커서를

가져가면 event_handler() 함수를 호출해서 onmouseover!라는 내용에 경고창을 출력하게 된다 )



( 개발자 도구에서 document 객체를 불러와서 보면 현재 열려있는 페이지 문서의 전체 내용이 나오는 걸 볼수 있다 )



  * 현재 열린 페이지 문서의 전체 내용을 가지고 있는 document 객체(DOM)
 
  * 현재 열린 URL이나 브라우저에 관한 정보를 가지고 있는 BOM
 



( document 객체 안에 있는 getElementsByTagName('p')를 이용해서 <p>태그들의 정보를 가져오게 되고

해당 태그가 여러개 있으면 배열 형태로 가져오게 된다 )



 
요소를 식별 할 수 잇는 속성( 글로벌 속성 )
 
  - id, class, name
 
    * id는 보통 유일한 식별자를 구분할 때 사용한다.
       ( 다만, 중복되도 상관 없지만 유일한 식별자는 id로 구분하고 그룹은 class로 보통 구분한다 )



( id를 이용해서도 마찬가지로 해당 id의 정보를 가져올수 있고 보통은 유일한 식별자를 구분할 때는 id를 사용하고

그룹인 경우에는 class를 사용하는게 보통 경우이지만 지키지 않아도 에러가 발생하진 않는다 )



( 위에 있는 document에 대한 객체를 이해하고 보면 document 객체를 이용해서 해당 id에 있는 innerHTML의 내용을

바꿀 수 있다는 것도 감이 오게 된다 )



( 마우스를 올려 놓으면 해당 이벤트가 발생하면서 document 객체에서 id가 'first'인  innerHTML의 내용이 바뀐걸 확인 할 수 있다 )



------------------------- WEB 1.0
 
WEB 1.0
 
  - HTML4(1997), Javascript(1995)
 
WEB 2.0
 
  - server program( web application )
  - CGI ( Common Gateway Interface )
 
  - PHP
 


* php 설치


  #>yum install php.i686
  ...
  #>yum install php-mysql.i686
  ...
 


( php 설치 이후에 정상적으로 동작하는지 확인해 보기 위해서 아파치 서버를 다시 시작해주고

php 코드를 하나 간단하게 작성해보면 php가 제대로 동작하는지 알 수 있다 )


 
 
PHP
 
  - 파일의 확장자는 php이다. ( 기본설정 )
  - php 영역블록은 javascript처럼 여러개의 영역으로 나눌 수 있다.
  - 변수를 선언 할때는 '$' 기호를 사용한다.
    ( 문자열 안에 변수를 넣는 것도 가능하다 )
 
       * 문자열 내에서 범위를 표현 할 때 "{}"를 이용해서 표현 해줄 수도 있다.
 
  - 문자 연결 연산자는 '.' 기호를 사용한다.
    ( javascript와 같이 타입을 가리지 않는다 )
 
  - javascript와 같이 '===' 등호를 사용한다.
    ( php도 마찬가지로 비교 할때 타입을 체크하지 않는다 )
 
 
php의 기본구조
 

<?php
 
 
?>

 


( php에서 가장 많이 사용하는 echo이고 echo는 파이썬에서 print와 같이 해당 내용을 출력 해주는 역할을 한다 )



  * php안에서는 c 문법을 구현 해놔서 c 문법 사용이 가능하다.
   ( c를 지원 해주는건 아니고 php에서 똑같이 구현을 해놨다 )


  * php도 python 같이 스크립트 언어이기 때문에 커맨드라인을 통한 실행이 가능하다.
 
  * 웹브라우저에서 소스보기를 통해 php와 html 코드를 비교해보면 
    php는 웹서버에서 동작하고 html은 웹 브라우저(클라이언트)에서 동작하는데 
    똑같은 코드로 보이는걸 알 수 있다.
    ( 웹 브라우저를 통해서 소스를 확인해도 서버 언어인 php 코드를 확인 할 수 없다 )
 
      - 이러한 부분 때문에 웹해킹에서 서버 언어를 공략할 때는 추측이 많이 필요해서 언어를

       많이 다뤄본 경험이 필요하다.
 
- php의 설정파일: /etc/php.ini
  * 설정은 처음 실행될 때 한번만 적용
  * 이미 실행중인 상태에서 설정 파일을 수정해도 바로 적용되지 않는다.
  * 다음 실행될 때 적용
 
533 display_errors = Off : On으로 변경하면 웹 브라우저에서 에러 메시지를 출력해준다.
   ( 보안상 이유 때문에 기본은 Off )
 
 
- apache 설정파일: /etc/httpd/conf/httpd.conf
                               /etc/httpd/conf/*
                               /etc/httpd/conf.d/*
 
 
php 참고사이트
 
  - 공식 홈페이지: http://www.php.net
 
 
! 슈퍼 글로벌 변수
 
  - 미리 정의된 변수
  - 일반적인 변수의 적용범위와는 다르다
  - 어떠한 php 프로그램이든 참조가 가능
 
  - $_GET, $_POST
  - $_COOKIE, $_SESSION
 
  http://php.net/manual/en/language.variables.superglobals.php
 

 


( 따로 $_SERVER[REMOTE_ADDR]을 선언하지 않아도 슈퍼 글로벌 변수이기 때문에 정상적으로 작동 하는 걸 볼 수 있고

슈퍼 글로벌 변수인 $_SERVER[REMOTE_ADDR]을 이용하면 해당 페이지에 접속한 사용자의 아이피를 가져오게 된다 ) 
 
 
 

 
 

반응형

댓글