Executando verificação de segurança...
3

Manjo zero de php.

Mas pelo que vi do código, acho que dá pra fazer umas SQL Injection. Isso é uma vunerabilidade grave.

O que quero dizer é o seguinte, tu tem a query (peguei esse de exemplo, mas c tem várias nesse modelo):
SELECT * FROM postagens WHERE author_id = $userID ORDER BY post_date DESC;

Se você não tiver cuidado com o tratamento do dado $userID, o teu usuário pode mandar uma string ao invés de um valor numérico. Aí vamo supor que ele manda '' or 1.

A busca vai ficar assim:
SELECT * FROM postagens WHERE author_id = '' or 1 ORDER BY post_date DESC;
E o resultado dessa busca são todas as postagens independente do usuário.

Eu ia até testar, porque pode ser que o tratamento exista, só que não identifiquei, mas não achei nenhum link publicado do seu site.

Carregando publicação patrocinada...
1

Eu já pensei nisso, e pelo que eu aprendi por enquanto, para evitar SQL injection, eu preciso filtrar os dados que o usuário inseriu dentro do input, então existe uma função chamada de "validate".

Ainda não testei as vunerabilidade, pós não manjo muito, mas tenho um contato que sabe sofre segurança, e pretendo pedir para ele fazer uns testes.

2

A forma correta de blindar seu código contra SQL Injection é utilizando prepared statements.

Vi no código que você já utiliza o PDO para se conectar ao banco, portanto basta algumas alterações no seu código.

Por exemplo a sua função deletePostByID() ficaria assim:

function deletePostByID($id) {
    $connect = dbConnect();
    $sql = "DELETE FROM postagens WHERE post_id = :id";
    $statement = $connect->prepare($sql);
    $statement->execute(['id'=>$id])
    
    // como extra, eu verificaria se algum post foi deletado de fato, retornando um booleano
    return $statement->rowCount() > 0;
}
1