我正在阅读一篇有关表单安全性的文章,因为我有一个用户可以在其中添加消息的表单。
我读到最好使用 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。
最佳答案
你有两个选择:
绝对不允许 HTML。使用
<strip_tags()
和 NO 允许的标签,或htmlspecialchars()
来转义其中可能存在的任何标签。允许 HTML,但您需要清理 HTML。这是不能使用
strip_tags
可以做到的事情。使用库(例如 HTMLPurifier )...
关于php - 如何保护表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3478386/