Pergunta

Eu estou tentando descobrir o que é a melhor maneira de gerenciar os dados de entradas do usuário referentes às marcas não desejáveis ??que ele pode inserir:

  • strip_tags () - as marcas são removidas e eles não são inseridos no banco de dados
  • as tags são inseridas no banco de dados, mas ao ler o campo e exibi-lo para o usuário que usaria htmlspecialchars ()

Qual é a melhor, e há qualquer desvantagem em qualquer um desses?

Saudações

Foi útil?

Solução

Isso depende do que a sua prioridade é:

  • se é importante para exibir caracteres especiais da entrada do usuário (como em StackOverflow, por exemplo), então você vai precisar para armazenar essas informações no banco de dados e higienizar-lo em exposição - neste caso, você vai querer a menos uso htmlspecialchars() para exibir a saída (se não algo mais sofisticado)
  • se você quiser apenas comentários de texto simples, o uso strip_tags() antes de colocá-lo no banco de dados - desta forma você vai reduzir a quantidade de dados que você precisa para loja, e reduzir o tempo de processamento ao exibir os dados na tela

Outras dicas

tags são inseridas no banco de dados, mas ao ler o campo e exibi-lo para o usuário que iria usar htmlspecialchars ()

Este. Você geralmente querem que as pessoas sejam capazes de digitar menos do que sinais e ampersands e tê-los exibido como tal na página. htmlspecialchars em cada etapa de saída de texto para HTML (se esse texto veio diretamente de entrada do usuário, ou a partir do banco de dados ou de algum outro lugar inteiramente) é o caminho certo para alcançar este objectivo. Mexer com a entrada é uma tática de não-at-all-apropriado para lidar com um problema de codificação de saída.

Claro, você vai precisar de um escape diferente - ou parametrização - para colocar o texto em um SQL string

.

As medidas tomadas para a entrada do usuário seguro depende inteiramente em que contexto os dados está sendo usado. Por exemplo:

  • Se você está inserindo-o em um banco de dados SQL, você deve usar declarações parametrizadas. mysql_real_escape_string() do PHP funciona decentemente, também.
  • Se você estiver indo para exibi-lo em uma página HTML, então você precisa para tirar ou escapar tags HTML.
  • Em geral, a qualquer momento você está misturando a entrada do usuário com outra forma de mark-up ou outra linguagem, elementos que da linguagem devem ser precedidos ou despojado da entrada antes de colocar em contexto.

O último ponto acima segues para o próximo ponto: muitos acham que a entrada original deve sempre ser mantida. Isso faz muito sentido quando, mais tarde, você decidir usar os dados de uma forma diferente e, por exemplo, tags HTML não são um grande negócio no novo contexto. Além disso, se o site é de alguma forma comprometida, você tem um registro da entrada exata dada.

Especificamente relacionadas com tags HTML na entrada do usuário destina-se para exibição em uma página HTML: Se houver qualquer motivo concebível para um usuário para as tags de entrada HTML, então simplesmente escapar deles. Se não, tira-los antes da exibição.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top