Quero montar um site baseado em php + mysql, com uso de Phpmyadmin.
Não uso Apache. Não tenho acesso ao arquivo php.ini do meu host, já que é compartilhado.
O host mantém as seguintes opções (pertinentes ao meu tópico):
magic_quotes : ON
safe_mode: OFF
Além disso, usa a tecnologia Zend - que pelas minhas pesquisas - é um serviço de encripitação do código fonte php (corrijam-me se estiver errada).
E estou preocupada com o quesito segurança, já que esse site será aberto para um grande número de visitantes. Por isso, gostaria de tirar algumas dúvidas asobre as medidas que tomei e pretendo tomar:
01) Fechar a conexão com o comando mysql_close(); realmente aumenta a segurança?
02) Como utilizar em um formulário, um filtro de html que permita apenas algumas tags (como: <b>,<br>,<strike>,<u>,<p>...) e barre outras tags html e scripts maliciosos (como a inserção de javascripts) e, além disso, manter a proteção contra sql injection simultaneamente - atualmente uso esta para injection:
function escape_string ($string) {
if(version_compare(phpversion(),"4.3.0")=="-1") {
mysql_escape_string($string);
} else {
mysql_real_escape_string($string);
}
}
$title = escape_string($_POST["title"]);03) No caso de query strings que pega IDs númericos a partir do GET, a utilização de int ($id = int($_GET["id"]);), como abaixo, é suficiente para evitar que utilizem da query para incluir sites externos ou visualizar arquivos importantes do meu servidor?04) Em um script de login para a minha área de administração que conteria páginas como (Novidades.php, Postar_novidades.php, Processa_Postar.php <- esta última seria apenas a parte que processaria o formulário), como o login deve ser feito? No caso de sessions em que as senhas e os usuários NÃO estejam em um banco de dados e que só há acesso para um usuário - eu -, o "código de restrição" nas páginas protegidas deveria ser colocado na página de processamento do formulário, na página do formulário ou em ambos?
05) A apresentação de erros pode ser manipulada sem o acesso e manipulação do php.ini?
06) Este tipo de login, que capta a própria senha do db, é mais seguro/inseguro que o uso de sessions?
<?
/* Check for values in $PHP_AUTH_USER and $PHP_AUTH_PW */
if ((!isset($PHP_AUTH_USER)) || (!isset($PHP_AUTH_PW))) {
/* No values: send headers causing dialog box to appear */
header('WWW-Authenticate: Basic realm="My Private Stuff"');
header('HTTP/1.0 401 Unauthorized');
echo 'Authorization Required.';
exit;
} else if ((isset($PHP_AUTH_USER)) && (isset($PHP_AUTH_PW))){
/* Values contain some values, so check to see if they're correct */
if (($PHP_AUTH_USER != "validname") || ($PHP_AUTH_PW != "goodpassword")) {
/* If either the username entered is incorrect, or the password entered is incorrect, send the headers causing dialog box to appear */
header('WWW-Authenticate: Basic realm="My Private Stuff"');
header('HTTP/1.0 401 Unauthorized');
echo 'Authorization Required.';
exit;
} else if (($PHP_AUTH_USER == "validname") || ($PHP_AUTH_PW == "goodpassword")) {
/* if both values are correct, print success message */
echo "<P>You're authorized!</p>";
}
}De qualquer, obrigada pela ajuda.










