Witam,
Mam troszkę pytań i proszę o udzielenie odpowiedzi, jeżeli ktoś ma chwilę i może pomóc :)
Będą mi bardzo potrzebne, ponieważ chciałbym zrobić w miarę 'bezpieczną' strone pod względem ataków na nią.
Przeglądałem wiele artykułów i są bardzo zróżnicowane odpowiedzi,dlatego proszę o wyrozumiałość.
Przykład 1.
if (isset($_POST['username']))
{
$username = $_POST['username'];
$query=$db->prepare('SELECT * FROM users where userName = :username');
$query->bindValue(':username', $username);
$query->execute();
$result = $query -> fetchAll(PDO::FETCH_COLUMN);
$query->closeCoursor();
foreach($result as $info)
{
echo 'Nick username : '.htmlspecialchars($info['name']) . '</br>';
echo 'ID usera : '.htmlspecialchars($info['id']) . '<hr>';
}
}
Pytania.
- Czy jak jest jakaś reguła żeby stosować przy robieniu zapytania po nawiasie pojedynczego apostrofa (') , podwójnego(") , czy też tzw. ciapka (`) ?
- przedstawiłem apostrof pojedynczy w przykładzie
- Jeśli binduje dane i używam PDO to przed "SQL_Injection" powinienem być bezpieczny?
- Czy trzeba dawać apostrofy w zapytaniu jezeli w tym warunku WHERE columna ktora chce filtrowac jest stringem?
Chodzi mi o to :
$query=$db->prepare('SELECT * FROM users where userName = ":username" ');
A dla inta wtedy nic nie dawać apostrofów?
Czy nie ma to reguły i wystarczy dać w ten sposób :
$query=$db->prepare('SELECT * FROM users where userName = :username ');
// bez apostrofów :username
- Czy bindować trzeba wszystkie dane jakie są zarówno wprowadzane do bazy, usuwane, wybierane, czy tez usuwane? (INSER,DELETE,SELECT,DELETE) ?
- Czy za każdym razem muszę zamykac kursor?
- Czy muszę używać za kazdym razem htmlspecialchars przed wyswietlanym tekstem z bazy, w celu unikniecia ataku XSS?
Ew. inne wskazówki mile widziane
pozdrawiam i proszę o odpowiedzi.