nuno_couto Posted July 10, 2006 at 12:45 PM Report #37336 Posted July 10, 2006 at 12:45 PM Boas. Pelo que andei a ler, é bastante aconselhável "nunca confiar" no que é colocado num formulário por parte dos utilizadores. Desde campos de pesquisa a formulários para introduzir dados na BD, há várias formas de filtrar o que é postado. Alguem aconselha algum comando em especial? Alguem conhece o comando real_escape_string? Será o mais aconselhado? Obrigado. portalmundial.net »» criamos sites
pedrotuga Posted July 10, 2006 at 05:52 PM Report #37387 Posted July 10, 2006 at 05:52 PM isso deve ser uma funcao de php certo? pa... basicamente a forma mais facil ë impedires que te ponham html ou codigo sql nos formularios. htmlspecialchars htmlentities usa PELO MENOS uma estas duas funcoes ( ver manual ) , depois ha outras medidas que se devem tomar dependendo da aplicacao. usando o htmlspecialchars impedes que te insiram html atravez do formulario. mas eh melhor ires dar uma olhadela ao manual. 🙂
nuno_couto Posted July 10, 2006 at 06:11 PM Author Report #37395 Posted July 10, 2006 at 06:11 PM O real_escape_string parece muito interessante. Vejam o exemplo existente em php.net (vou colar abaixo) <?php // Query database to check if there are any matching users $query = "SELECT * FROM users WHERE user='{$_POST['username']}' AND password='{$_POST['password']}'"; mysql_query($query); // We didn't check $_POST['password'], it could be anything the user wanted! For example: $_POST['username'] = 'aidan'; $_POST['password'] = "' OR ''='"; // This means the query sent to MySQL would be: echo $query; ?> The query sent to MySQL: SELECT * FROM users WHERE user='aidan' AND password='' OR ''='' This would allow anyone to log in without a valid password. Este código seria mais correcto: <?php // Quote variable to make safe function quote_smart($value) { // Stripslashes if (get_magic_quotes_gpc()) { $value = stripslashes($value); } // Quote if not a number or a numeric string if (!is_numeric($value)) { $value = "'" . mysql_real_escape_string($value) . "'"; } return $value; } // Connect $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password') OR die(mysql_error()); // Make a safe query $query = sprintf("SELECT * FROM users WHERE user=%s AND password=%s", quote_smart($_POST['username']), quote_smart($_POST['password'])); mysql_query($query); ?> The query will now execute correctly, and SQL Injection attacks will not work. Aparentemente é uma boa protecção mas nunca usei... Vou experimentar e tentar fazer alguns testes. Alguem costuma usar este comando? portalmundial.net »» criamos sites
nuno_couto Posted July 12, 2006 at 10:05 PM Author Report #37900 Posted July 12, 2006 at 10:05 PM pedrotuga htmlspecialchars -- Convert special characters to HTML entities htmlentities -- Convert all applicable characters to HTML entities Tens a certeza da função destes comandos que falaste? Eu dei uma espreitadela ao php.net e são estas as funções mas não sei o que significa "entities". Mas acho que não tem nada a ver com a remoção dos caracteres "perigosos" para a base de dados. Ainda não sei bem que função usar mas acho q deve ser a real_escape_string... portalmundial.net »» criamos sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now