我正在阅读有关表单安全性的文章,因为我有一个用户可以在其中添加消息的表单。
我读到最好使用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一样来尝试入侵网站。
最佳答案
您有2个选择:
绝对不允许HTML。将strip_tags()
与没有允许的标签一起使用,或将htmlspecialchars()
逸出其中可能存在的所有标签。
允许HTML,但是您需要清理HTML。使用strip_tags
不能执行此操作。使用库(例如HTMLPurifier)...
关于php - 如何获得表格?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3478386/