selamlar ya bir sorum olacaktı.
bir database class'ı yazarken, sql injection'a karşı nasıl önlem alabiliriz? pdo sınıfında prepare işlemleri bunu sağlıyor bildiğim kadarıyla.
şimdi örnek vermek istiyorum;
public function __construct($username = "", $password = "", $host = "", $dbname = "", $options=array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')){
$this->isConnected = true;
try {
$this->datab = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options);
$this->datab->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->datab->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
}
catch(PDOException $e) {
$this->isConnected = false;
throw new Exception($e->getMessage());
}
}
public function getRows($query, $params=array()){
try{
$stmt = $this->datab->prepare($query);
$stmt->execute($params);
return $stmt->fetchAll();
}catch(PDOException $e){
throw new Exception($e->getMessage());
}
}
public function insertRow($query, $params){
try{
$stmt = $this->datab->prepare($query);
$stmt->execute($params);
}catch(PDOException $e){
throw new Exception($e->getMessage());
}
}
public function updateRow($query, $params){
return $this->insertRow($query, $params);
}
bu fonksiyonları düşündüğümüzde burada açıklar nelerdir?
bir database class'ı yazarken, sql injection'a karşı nasıl önlem alabiliriz? pdo sınıfında prepare işlemleri bunu sağlıyor bildiğim kadarıyla.
şimdi örnek vermek istiyorum;
public function __construct($username = "", $password = "", $host = "", $dbname = "", $options=array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')){
$this->isConnected = true;
try {
$this->datab = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options);
$this->datab->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->datab->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
}
catch(PDOException $e) {
$this->isConnected = false;
throw new Exception($e->getMessage());
}
}
public function getRows($query, $params=array()){
try{
$stmt = $this->datab->prepare($query);
$stmt->execute($params);
return $stmt->fetchAll();
}catch(PDOException $e){
throw new Exception($e->getMessage());
}
}
public function insertRow($query, $params){
try{
$stmt = $this->datab->prepare($query);
$stmt->execute($params);
}catch(PDOException $e){
throw new Exception($e->getMessage());
}
}
public function updateRow($query, $params){
return $this->insertRow($query, $params);
}
bu fonksiyonları düşündüğümüzde burada açıklar nelerdir?
veya da sizin önereceğiniz bir veritabanı class'ı mevcut mudur? "hem her türlü güvenliği var hem de çok pratik" diyeceğiniz. en azından onun üstünden okuyarak işlemleri anlayayım.
tchuck
1