PHP 자리 표시자로 창 만들기
이전 기사에서는 DVWA가 SQL 문에 변수를 직접 넣기 때문에 SQL 주입을 할 수 있는 코드가 되었다.
그럼 이번에는 SQL 주사기에 대응하는 방법으로 자리 표시자를 소개해 드리려고 합니다.
자리 표시자는 무엇입니까?
자리 표시자는 이름과 같이 SQL 문 뒤에 설정된 값을 기준으로 위치를 지정하는 기능을 제공합니다.
자리 표시자 는 물음표 자리 표시자 이다명명 자리 표시자: 수치로 표시합니다.
또한 뒤에 입력한 값의 귀속값을 미리 붙여넣는 문장(예약문장)이라고 한다.
이 자리 표시자를 사용하면 입력한 값에 SQL을 직접 삽입하는 것을 피할 수 있습니다.
HTML/PHP/MySQL을 사용한 양식 만들기
여기서, 나는 실제적으로 창을 만들고, 자리 차지 문자를 사용하는 코드를 기록하고 싶다.
코드는 아래의 문장을 참고했다.
https://noumenon-th.net/programming/2016/01/18/mysql-2/
전제 조건
먼저 MySQL을 사용하여 DB, 테이블 및 열을 설정합니다.
DB를test1로 설정하고 테이블을name으로 설정합니다list, 열을 id·name으로 설정합니다.
# mysql -u root -p
mysql> CREATE DATABASE test1;
mysql> USE test1;
mysql> CREATE TABLE name (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,name TEXT NOT NULL) DEFAULT CHARACTER SET=utf8;
먼저 HTML로 기본적인 간단한 형식을 기록합니다.
index.html
<!DOCTYPE html>
<html>
  <head>
    <title>データを入力する</title>
    <meta charset="utf-8">
    </head>
<body>
  <h1>フォーム画面</h1> 
      <form action="form.php" method="post">
          名前を入力:<input type="text" name="name">
          <input type="submit" value="登録する">
      </form>
</body>
</html>
그런 다음 양식 정보를 MySQL에 로그인하는 PHP 파일을 만듭니다.
자리 표시자를 사용하여 SQL 문을 표시합니다.
form.php
<?php
header("Content-type: text/html; charset=utf-8");
//データベース接続
$server = "IPアドレス";  
$userName = "MySQLのユーザー名"; 
$password = "MySQLのパスワード"; 
$dbName = "test1";
$mysqli = new mysqli($server, $userName, $password, $dbName);
if ($mysqli->connect_error){
    echo $mysqli->connect_error;
    exit();
}else{
    $mysqli->set_charset("utf-8");
}
if(empty($_POST)) {
    echo "<a href='index.php'>index.php</a>←登録はこのページから";
}else{
    //名前入力判定
    if (!isset($_POST['name'])  || $_POST['name'] === "" ){
        echo "名前が入力されていません。";
    }else{
        //プリペアドステートメントの設定(SQL文を最初に用意して、その後はクエリ内のパラメーターの値だけを変更する)
        $stmt = $mysqli->prepare("INSERT INTO name_list (name) VALUES (?)");
        if($stmt){
            //プレースホルダに値を設定する、bind_paramsの第一引数は文字列が入るので's'
            $stmt->bind_param('s', $name);
            $name = $_POST['name'];
            //登録する名前をhtml表記、クオテーションを取った状態で表示
            if($stmt->execute()){
                echo htmlspecialchars($name, ENT_QUOTES, 'UTF-8')."さんを登録しました";
            }else{
                echo $stmt->errno . $stmt->error;
            }
            $stmt->close();
        }else{
            echo $mysqli->errno . $mysqli->error;
        }
    }
}
// データベース切断
$mysqli->close();
?>
이렇게 하면 자리 표시자를 사용하여 PHP의 창을 만들 수 있습니다.
Reference
이 문제에 관하여(PHP 자리 표시자로 창 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/bindingpry/items/5cc29abb009f8f58cded텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)