php - 如何保护表单?

标签 php htmlspecialchars html-entities strip-tags

我正在阅读一篇有关表单安全性的文章,因为我有一个用户可以在其中添加消息的表单。

我读到最好使用 strip_tags()htmlspecialchars()nl2br()。在其他地方据说使用 html_entity_decode()

我的页面中有这段代码,它接受用户输入

<?php 
    $topicmessage = check_input($_POST['message']); //protect against SQLinjection
    $topicmessage = strip_tags($topicmessage, "<p><a><span>");
    $topicmessage = htmlspecialchars($topicmessage);
    $topicmessage = nl2br($topicmessage);
?>

但是当我回显该消息时,所有内容都在一行上,并且似乎分隔符已被 strip_tags 删除,并且没有被 nl2br() 放回。

对我来说,这样做是有道理的,因为如果中断已被删除,它如何知道将其放回何处(或确实如此)?

无论如何,我正在寻找一种方法来保护我的表单,使其不被用来尝试破解网站,例如在表单中使用 javascript。

最佳答案

你有两个选择:

  1. 绝对不允许 HTML。使用 strip_tags()NO 允许的标签,或 htmlspecialchars() 来转义其中可能存在的任何标签。

    <
  2. 允许 HTML,但您需要清理 HTML。这是不能使用strip_tags可以做到的事情。使用库(例如 HTMLPurifier )...

关于php - 如何保护表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3478386/

相关文章:

javascript - 如何判断一个字符串是否包含 HTML 实体(如 &)?

php - 刷新页面空记录自动插入数据库

javascript - 隐藏 id 大于 $number 的行

PHP:htmlspecialchars() 和非英语语言

php - htmlentities 不适用于单引号

html - 元描述中应该使用 HTML 字符代码还是符号?

php - 用于检测连续数字的正则表达式 - 不适用于非英语输入

php - PHP读取带有特殊字符的图像文件

php - 用 PHP 中的 htmlspecialchars() 替换除某些 html 标签以外的所有标签?

java - 如何从java字符串中删除 "&nbsp;"