sql 쿼리 보안 문제 때문에 질문드립니다.

sql 쿼리 보안 문제 때문에 질문드립니다.

QA

sql 쿼리 보안 문제 때문에 질문드립니다.

본문


<?php
include_once('./_common.php');

$mb_id = $member['mb_id'];
$bo_text = '텍스트 내용';
// SQL 쿼리 작성
$sql = "INSERT INTO g5_board_text (mb_id, bo_text) VALUES ('$mb_id', '$bo_text')";
// 쿼리 실행
$result = sql_query($sql);
if ($result) {
    echo "데이터가 성공적으로 저장되었습니다.";
} else {
    echo "데이터 저장에 실패했습니다: " . mysqli_error($connect_db);
}
?>

 

 

대략 이렇게 짜봤는데요. 데이터 연결은 common.php로 보안 설정이 될거 같은데,

나머지는 할 줄 몰라서 저렇게 기본적인것만 구현해봣습니다.

 

이 경우 보안에 위협 될 만한 요소가 있을까요??

 

$mb_id 는 로그인 한 유저 id 값이구요.

$bo_text 입력값은 아니고 지정 된 텍스트만 저장 하려고 합니다.

이 질문에 댓글 쓰기 :

답변 3

잠재적인 문제 발생을 차단하기 위해 다음처럼 시도해 볼수 있습니다.


<?php
include_once('./_common.php');
$mb_id = $member['mb_id'];
$bo_text = '텍스트 내용';
/*
// SQL 쿼리 작성
$sql = "INSERT INTO g5_board_text (mb_id, bo_text) VALUES ('$mb_id', '$bo_text')";
// 쿼리 실행
$result = sql_query($sql);
*/
$sql = 'INSERT INTO g5_board_text (mb_id, bo_text) VALUES (?, ?)';
$stmt = mysqli_prepare($connect_db, $sql);
mysqli_stmt_bind_param($stmt, 'ss', $mb_id, $bo_text);
$result = mysqli_stmt_execute($stmt);
if ($result) {
    echo "데이터가 성공적으로 저장되었습니다.";
} else {
    echo "데이터 저장에 실패했습니다: " . mysqli_error($connect_db);
}
?>

include_once('./_common.php');

$mb_id = $member['mb_id'];
$bo_text = '텍스트 내용';
// Prepared Statements 생성
$sql = "INSERT INTO g5_board_text (mb_id, bo_text) VALUES (?, ?)";
if ($stmt = $connect_db->prepare($sql)) {
    // 바인딩 및 실행
    $stmt->bind_param("ss", $mb_id, $bo_text);
    $stmt->execute();
    // 성공 여부 확인
    if ($stmt->affected_rows > 0) {
        echo "데이터가 성공적으로 저장되었습니다.";
    } else {
        echo "데이터 저장에 실패했습니다.";
    }
    $stmt->close();
} else {
    echo "Prepared Statements 생성 실패: " . $connect_db->error;
}


더 낮은 보안을 한다면 이렇게 함으로써 입력된 데이터를 쿼리로부터 분리하여 SQL Injection과 같은 보안 취약점을 방지할 수 있다는것 참조해주세요

쿼리 취약은 다른분들이 달아주셨고

관리자만 실행하는 부분이라면 관리자 외에는 접속할수 없도록 최상단에 분기해주세요.

 

// 관리자가 아니라면

if (!$is_admin) alert('접근 권한이 없습니다.');

답변을 작성하시기 전에 로그인 해주세요.
전체 123,674 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT