다음은 로그인 페이지에 대한 나의 PHP 코드입니다.PHP와 MySQL의 SQL 삽입 방지 로그인 페이지
if(!$_POST["username"] || !$_POST["password"])
{
echo "Username and Password fields are mandatory.";
}
else
{
$query="select user_id from users where user_name='".$_POST["username"]."' and password='".md5($_POST["password"])."' ";
.....
.....
}
나는 이것이 SQL 주입에 취약한 코드라고 생각합니다. MYSQL 데이터베이스에 SQL 주입을 방지하려면이 코드에서 무엇을 수정해야합니까?
function connect_database()
{
$con = mysqli_connect("servername", "username", "", "dbname");
if (!$con)
{
$con = "";
echo("Database connection failed: " . mysqli_connect_error());
}
return $con;
}
내가 mysqli_prepare을 사용하려고하지만, 점점 오류 :
Warning: mysqli_prepare() expects exactly 2 parameters, 1 given
Fatal error: Call to a member function bindParam() on null
:
$unsafe_username = $_POST["username"];
$unsafe_password = md5($_POST["password"]);
$query=mysqli_prepare("select user_id from users where user_name= ? and password= ? ");
$query->bindParam("ss", $unsafe_username, $unsafe_password);
$query->execute();
내가 오류 다음있어 내 MySQL 데이터베이스에 연결하기 위해 다음과 같은 코드를 사용하고
내가 대신 mysqli_escape_string의 mysql_real_escape_string를 사용하지 말아야? –
mysql이면 mysqli를 사용해야한다. 내 게시물을 편집했습니다. – XanT