ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [웹보안] php
    보안/웹보안 2017. 5. 15. 16:41

    php 관련 데몬

    php.i686

    php-mysql.i686

    mysql.i686            client 측 mysql

    mysql-server.i686   server 측 mysql

    설치후 httpd 데몬 재시작 ( php는 아파치에서 해석하기떄문이다 )


    확인

    test.php

    소스

    결과

    <?php

          echo phpinfo()

    ?>








    <!--

      소스코드가 그대로 노출 된다면 

      php 가 제대로 동작되지 않는것이다.

    -->







     

     



    php 구조

    #1 php파일의 기본 확장자는 .php를 사용


    #2 서버에서 실행되며 결과(html)만을 확인한다.

    >> 웹브라우저(client)는 php소스코드를 확인할 수 없다.


    #3 php 파일내에서는 html을 포함할 수 있다.


    --html code--

    <?php                             // php블록의 시작


    --php code --

    --c 표준 함수--            // php는 C문법을 그대로 구현해놓았다.

     

    ?>                                  // php블록의 끝

    --html code--


    배열

    $arr = array( 100, 200, 300, 400, 500 );        //선언

    $arr2 = array( "frist" => 1,

      "second" => 2,

      "three" => 3,

      "four" => 4

    );                                    //키값과 같이 선언

    echo "$arr[0]";                                 //하나씩

    print_r( $arr );                                  //사전형식으로 나옴


    값 전달 ( -- HTTP 표준 프로토콜에 정의된 내용 -- )

    get

    HTTP헤더를 통해서 전달

    $_GET 변수를 통해서 전달받을 수 있다.

    [ 보안상 ] 취약 : URL을 통해 입력값이 외부에 노출되어 변조가 쉽다.

    [ 입력값의 제한 ] : 정해진 헤더크기보다 큰 데이터를 전송할 수 없다.


    post

    $_POST 변수를 통해서 전달받을 수 있다.

    데이터 변수영역에 담아서 전달한다. 

    >> 따라서 login같은 [ form ] 형식이 생겼다.


    cookie

    사용자 인증에 꼭 필요한 내용



    URL )))


    *슈퍼글로벌스 변수 ( 미리 선언되어 있음 )

    $_GET                배열 , 쿼리스트링= URL을 통해 데이터 노출

    $_POST              배열 , 전달되는 데이터가 보이지 않음 

    $_COOKIE
    $_SESSION


    데이터베이스 ( DATABASE )

    -대용량의 데이터들을 효율적으로 관리하기 위한 도구

    -데이터베이스 이저 : 파일 형태로 저장


    데이터에베이스 이전 :  그냥 파일에 저장

    데이터베이스 활용 : 데이터를 효율적으로 제어할수 있다. >> 나중에 사용하기 쉬운형태로


    DBMS : 데이터베이스 관리 시스템

    Orcle, My-SQL, MS-SQL, 


    리눅스 - Mysql = 3306 포트

    sql 대한 설명은 리눅스 - DNS 웹서비스 참고


    DDL

      CREATE 

        create database [database]

        create table [table](col type, col2 type, col3 type);

      

      DROP

       

      alter 사용법

      http://sqlmvp.kr/220344779677


    DML

      SELECT

      INSERT

    insert into [table] values(값, 값2, 값3 ----);

    insert into [table] (열1 열2 열3) values (값1 값2 값3---);

      DELETE

      UPDATE


    cloumn type not null auto_increment Primary Key : 시퀀스추가




    table의 타입


    char( ) : 괄호안의 고정사이즈를 할당 ( 주민등록같은 ) - 속도가 가장빠름 

    varchar( ) : 가변사이즈, 최대 크기가 정해져있다. ( 작게만 사용이 가능, 비밀번호, id 같은 )

    text : 65,--- 사이즈의 최대크기를 가진 가변타입




    파일 명령어

    $fp = fopen('file_path','mode')


    fpassthru( $fp ); //모든 파일 출력


    fwrite( ); //파일쓰기


    flush(); 버퍼 비우기


    fclose( $fp ); //파일 닫기


    php database 연결

    warring : 오리지널버전은 php7.0 버전 이후로 사라진다고 합니다.


    DB연결

    $con = mysql_connect('host','name','pass');

    !$con

    DB가없을경우 : if( $con ) { die(mysql_error() ); 로 에러출력가능


    use database;

    $con = mysql_select_db( 'database' );


    insert

    $query = "insert into ~";

    mysql_query( $query );


    select

    $query = "select * from page";

    $row = mysql_fetch_array( $res=mysql_query( $query ) , MYSQL_BOTH );



    쿠키


    세션

    /var/lib/php/session/ << 에 자동으로 생성되는 pcid의 파일명으로 세션정보가 저장된다.


    session_start();    #무조건 선언후 시작 => 세션아이디가 자동으로 발행





    댓글

Designed by Tistory.