Arquivado
Este tópico foi arquivado e está fechado para novas respostas.
Strip-slashes em ASP , como usar este código para proteção.
Por
Patrick Ramiro, em ASP Clássico
Recommended Posts
-
Conteúdo Similar
-
Por Jack Oliveira
Ola pessoal estou fazendo meu sistema de cadastro em PDO, Mais em alguns campos do formulario de cadastro ou de edição
eu quero por espaços ao cadastrar os conteudos
e o meu SQL Injection ele bloqueia ou seja ele tira os espaço da onde que eu não quero que sai por causa do trim
porem também não quero tirar o trim
quero que apenas alguns campo seja cadastrados com os espaços
vou mostra os codigo pra vcs..
Este é a minha função SQL Injection
<?php // URL Amigavel function UrlAmigavel($str){ $str = strtolower(utf8_decode($str)); $i=1; $str = strtr($str, utf8_decode('à áâãäåæçèéêëìÃîïñòóôõöøùúûýýÿ'), 'aaaaaaaceeeeiiiinoooooouuuyyy'); $str = preg_replace("/([^a-z0-9])/",'-',utf8_encode($str)); while($i>0) $str = str_replace('--','-',$str,$i); if (substr($str, -1) == '-') $str = substr($str, 0, -1); return $str; } // SQL Injection function antiInject($tmp_mix){ if(is_array($tmp_mix)){ foreach($tmp_mix as $k => $v){ $tmp_mix[$k] = antiInject($v); } return $tmp_mix; } else { $tmp_mix = preg_replace(mb_sql_regcase("/(%0a|%0d|Content-Type:|bcc:| to:|cc:|Autoreply:|insert |delete |where|drop table|show tables|--|\\\\)/"), "", $tmp_mix); $tmp_mix = preg_replace("/<script.*?\/script>/s", "", $tmp_mix); $tmp_mix = str_replace('"',"'",$tmp_mix); $tmp_mix = trim($tmp_mix); $search = array('--','--','CDATA','<![CDATA['); $replace = ''; $tmp_mix = str_ireplace($search,$replace,$tmp_mix); return $tmp_mix; } } Este aqui é o codigo do formulario de cadastro
<div class="tab-content"> <?php if(isset($_GET['AdicionarItem'])){ VerificaCategoria('c_recados'); ?> <form method="post" action="?Adicionar" enctype="multipart/form-data"> <div class="col-md-6"> <div class="form-group"> <label>Nome:</label> <input class="form-control" name="nome" required> </div> <div class="form-group"> <label>Categoria:</label> <select class="form-control" name="id_categoria"> <?php $Query = DBRead('c_recados','*','WHERE id > 0'); if (is_array($Query)) { foreach ($Query as $c_dados) { ?> <option value="<?php echo $c_dados['id']; ?>"><?php echo $c_dados['categoria']; ?></option> <?php } } ?> </select> </div> </div> <div class="col-md-6"> <div class="form-group"> <label>E-mail:</label> <input class="form-control" name="email"> </div> <div class="form-group"> <label>Status:</label> <select class="form-control" name="status"> <option value="S" >Ativo</option> <option value="N">Inativo</option> </select> </div> </div> <div class="col-md-12"> <div class="form-group"> <label>Imagem:</label> <input class="form-control" type="file" name="imagem"> </div> <div class="form-group"> <label>Recado:</label> <textarea class="form-control" name="recado" rows="4" required></textarea> </div> <div class="form-group"> <label>Resposta:</label> <textarea class="form-control" name="resposta" rows="4"></textarea> </div> <center><hr> <button class="btn btn-primary">Adicionar</button> <br><br> </center> </div> </form> No caso ai quero apenas nestes campos seja cadastrados com os espaços porem que o trim não tira eles
<div class="form-group"> <label>Recado:</label> <textarea class="form-control" name="recado" rows="4" required></textarea> </div> <div class="form-group"> <label>Resposta:</label> <textarea class="form-control" name="resposta" rows="4"></textarea> </div>
-
Por BrunoBit
Fala pessoal, bom dia, tudo joia por aí?
Esses dias eu li uma matéria/aula de um site que o @Gabriel Heming compartilhou com a gente aqui no fórum sobre sql injection, acredito que seja um dos melhores conteúdos explicativos sobre sql injection, vou deixar o link aqui pra vcs caso queiram ler também pq vale à pena pra quem quer formatar bem seu sql e proteger seu banco de injeções: https://phpdelusions.net/sql_injection
Gostaria de saber, como vocês fazem pra bloquear sql injection? Digo com relações à verificações antes de inserir qualquer coisa no sql, pq pelo o que entendi no artigo basicamente a sql injection acontece por má formatação do sql e por verificações erradas do conteúdo das variáveis, aí a pessoa de má fé explora essas más formatações.
Hoje tava fazendo uma conexão ao banco de dados e parei pra pensar nisso, com relação à verificações, em um primeiro momento saiu isso
$business_name = $_POST['business']; $name_business = $_POST['txtuname']; $email_business = $_POST['txtemail']; $upass = $_POST['txtpass']; $active_invoice = $_POST['ativar_fatura']; $price_business = $_POST['business_price']; $verify_variables = array($business_name,$name_business,$email_business,$upass,$active_invoice,$price_business); for($i = 0;$i < count($verify_variables);$i++){ $verify_variables[$i] = str_replace("=", "", $verify_variables[$i]); $verify_variables[$i] = str_replace("'", "", $verify_variables[$i]); $verify_variables[$i] = str_replace("`", "", $verify_variables[$i]); $verify_variables[$i] = str_replace(":", "", $verify_variables[$i]); $verify_variables[$i] = str_replace(";", "", $verify_variables[$i]); $verify_variables[$i] = str_replace(",", "", $verify_variables[$i]); $verify_variables[$i] = str_replace("(", "", $verify_variables[$i]); $verify_variables[$i] = str_replace(")", "", $verify_variables[$i]); $verify_variables[$i] = str_replace("\"", "", $verify_variables[$i]); $verify_variables[$i] = str_replace("INSERT INTO", "", $verify_variables[$i]); $verify_variables[$i] = str_replace("DELETE FROM", "", $verify_variables[$i]); $verify_variables[$i] = str_replace("SELECT FROM", "", $verify_variables[$i]); $verify_variables[$i] = str_replace("SELECT * FROM", "", $verify_variables[$i]); $verify_variables[$i] = str_replace("SELECT *", "", $verify_variables[$i]); $verify_variables[$i] = str_replace("DELETE * FROM", "", $verify_variables[$i]); $verify_variables[$i] = str_replace("DELETE *", "", $verify_variables[$i]); } Existe bastante discussão com relação às aspas simples ', como no caso de alguém com nome de Hanna O'hara, bastante comum nos estados unidos esse estilo de nome, mas aqui no Brasil acredito que quase ninguém tenha esse nome com aspas simples, a não ser se um gringo for utilizar.
Eu sinceramente ainda não sei utilizar 100% o htmlentities(), htmlspecialchars(), mysql_real_string_escape() e derivados pra fazer uma boa verificação assim que receber a variável, como os $_POST[''] lá em cima que estão tudo "pelado" sem nenhuma pré verificação com htmlentities, htmlspecialchar ou mysql_real_string_escape.
Como vocês fazem? O que vocês adicionariam ou removeriam nesse código que dei de exemplo? Ou se fariam completamente diferente.
Valeu rapaziada, abração pra vocês e fiquem com Deus.
-
Por AndersonWS
Galera estou aprendendo então minha classe ainda tem muito a melhorar por isso peço ajuda, dicas e orientações para melhoria da classe.
O que eu fiz funciona mas preciso melhorar. Umas das coisa que eu gostaria seria usar o bindParam ou algo para evitar o SQL Injection.
Segue o que eu consegui fazer:
public function update($tableName, array $data, $cond, array $condParams) { $set = array(); foreach(array_combine($condParams, $data) AS $v1 => $v2) { $set[] = $v1 . ' = '.$v2; } $sql = 'UPDATE ' . $tableName. ' SET ' . join(', ', $set). ' WHERE '. $cond; $this->sql = $sql; // consulta que retorna $query = $this->db->prepare($this->sql); $query->execute(); } Sugestões?
-
Por woak0
$email = $_POST['email'];
$uid = $_POST['uid'];
$escape_email = mysqli_real_escape_string($connect, $email);
$escape_UID = mysqli_real_escape_string($connect, $uid);
if(isset($email)){
$sql = "SELECT * FROM accounts WHERE email = '$escape_email' and uid = '$escape_UID'";
Estou utilizando corretamente? Isso ajudará a evitar SQL Injections? Quais outras formas de evitar?
-