PHP 및 Vue.js 개발을 위한 보안 모범 사례: 데이터베이스 삽입 방지
보안은 모든 애플리케이션 개발 프로세스에서 심각하게 고려해야 하는 측면입니다. 데이터베이스 주입은 일반적인 보안 취약점 중 하나입니다. 해커는 사용자 입력을 악의적으로 주입하여 데이터베이스의 데이터를 획득하거나 변조할 수 있습니다. PHP 및 Vue.js 개발에는 데이터베이스 주입을 방지하기 위해 채택할 수 있는 몇 가지 모범 사례가 있습니다. 이 기사에서는 데이터베이스 삽입을 방지하는 몇 가지 기술을 소개하고 해당 코드 예제를 제공합니다.
$username = $_POST['username']; $password = $_POST['password']; $sql = "SELECT * FROM users WHERE username = :username AND password = :password"; $stmt = $pdo->prepare($sql); $stmt->bindParam(':username', $username); $stmt->bindParam(':password', $password); $stmt->execute(); $user = $stmt->fetch(PDO::FETCH_ASSOC);
위 코드에서는 실제 사용자 입력 대신 명명된 자리 표시자(:username 및 :password)를 사용했습니다. PDO의 binParam 메소드는 사용자 입력을 자리 표시자에 바인딩하여 입력이 SQL 문의 일부로 해석되지 않도록 합니다.
<template> <div> <input v-model="username" type="text" placeholder="Username"> <input v-model="password" type="password" placeholder="Password"> <button @click="login">Login</button> </div> </template> <script> export default { data() { return { username: '', password: '' }; }, methods: { login() { // 进一步验证用户输入,防止注入攻击 if (/^[a-zA-Z0-9]+$/.test(this.username) && /^[a-zA-Z0-9]+$/.test(this.password)) { // 验证通过,发送登录请求 // ... } } } }; </script>
위 코드에서 정규 표현식 ^[a-zA-Z0-9]+$를 사용하여 사용자 이름과 비밀번호에 문자와 비밀번호만 포함하도록 제한했습니다. 숫자. 이렇게 하면 사용자 입력에 특수 문자나 SQL 문이 포함되는 것을 방지할 수 있습니다.
$username = mysqli_real_escape_string($conn, $_POST['username']); $password = mysqli_real_escape_string($conn, $_POST['password']); $sql = "SELECT * FROM users WHERE username = '$username' AND password = '$password'"; $result = mysqli_query($conn, $sql); $user = mysqli_fetch_assoc($result);
위 코드에서는 mysqli_real_escape_string을 사용하여 사용자 이름과 비밀번호를 이스케이프하여 입력이 SQL 문의 구조를 손상시키지 않도록 합니다.
요약하자면, 보안 코딩 방식을 채택함으로써 데이터베이스 주입 공격을 효과적으로 방지할 수 있습니다. 매개변수화된 쿼리, 입력 유효성 검사 및 필터링, 사용자 입력 삭제 및 이스케이프 처리는 모두 매우 중요한 방어 수단입니다. PHP 및 Vue.js 개발에서 개발자는 항상 보안을 최우선으로 생각하고 특정 상황에 따라 애플리케이션의 데이터베이스를 보호하기 위한 적절한 방어 조치를 선택해야 합니다.
위 내용은 PHP 및 Vue.js 개발을 위한 보안 모범 사례: 데이터베이스 주입 방지의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!