Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Patrick Ramiro

Strip-slashes em ASP , como usar este código para proteção.

Recommended Posts

  1. Olá meu amigos tenho esse código em asp , porém não sei como usá-lo, como faço para proteger minhas páginas contra CSFR ,

  2. como faço para usá-lo na página de login que contem formulário,to começando agora e não tenho a menor ideia.

Agradeço desde já a ajuda de vcs.

<%

' Copyright © 2009, reusablecode.blogspot.com; some rights reserved.

'

' This work is licensed under the Creative Commons Attribution License. To view

' a copy of this license, visit http://creativecommons.org/licenses/by/3.0/ or

' send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California

' 94305, USA.

' Despite the identical naming, these functions are more comprehensive than their PHP equivalents.

' They go above and beyond even mysql_real_escape_string(), by including support for backspace and horizontal tab.

' List of characters handled:

' \000 null

' \010 backspace

' \011 horizontal tab

' \012 new line

' \015 carriage return

' \032 substitute

' \042 double quote

' \047 single quote

' \134 backslash

' \140 grave accent

' Returns a string with backslashes before characters that need to be quoted in database queries

function addslashes(unsafeString)

dim regEx

set regEx = new RegExp

with regEx

.Global = true

.IgnoreCase = true

.Pattern = "([\000\010\011\012\015\032\042\047\134\140])"

end with

addslashes = regEx.replace(unsafeString, "\$1")

set regEx = nothing

end function

' Un-quote string quoted with addslashes()

function stripslashes(safeString)

dim regEx

set regEx = new RegExp

with regEx

.Global = true

.IgnoreCase = true

.Pattern = "\\([\000\010\011\012\015\032\042\047\134\140])"

end with

stripslashes = regEx.replace(safeString, "$1")

set regEx = nothing

end function

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

você deve pegar o login do user, o que ele digitar no campo login e passar na função. Porém existem várias funções que postei no fórum para tratamento do conteúdo que o user digitar, para evitar várias situações com sqlinjection, Error Reporting,Data Handling Errors e outras. Geralmente stripslashes não são recursiva. Se você quer aplicar esta função a um array multi-dimensional, você precisa usar uma função recursiva. Ela serve para etorna uma string com as barras invertidas retiradas. (\' se torna ' e assim por diante.) Duas barras invertidas (\\) se tornam uma (\). Se você não esta inserindo estes dados em um lugar (como um banco de dados) que precise de escapar. Por exemplo, se você esta usando estes dados para gerar um formulário HTML.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • 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?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.