这可能会被标记为重复,但在我的辩护中,我一直在寻找一段时间,而且我发现的很多信息与mysql
或mysqli
最多相关,或者是不完整的。我想要一个彻底的,最新的答案,这个答案会影响使用PDO
和准备好的陈述。
在数据移动通过应用程序时处理数据的正确的方式是什么。
以下理论数据流量是否足够,如果没有,您会推荐哪些改进措施?
$_POST
而不是$_GET
$variable = htmlentities($_POST['variable']);
。PDO
和准备好的语句,例如:bindValue(':variable', $variable)
; echo htmlspecialchars($variable);
来阻止XSS攻击。两个相关问题:
htmlentities()
。如果用户输入了<p>my input value</p>
,如何删除插入的所有垃圾。这会将<tr><p>my input value</p>&l
写入数据库。htmlspecialchars($JSON_Array)
先谢谢你的帮助。
答案 0 :(得分:3)
一般来说,您的流程与此类似:
“验证”数据客户端 - 您不希望信任此验证,因为您永远不应该信任来自客户端的任何内容,这样做是为了让用户体验更好。
在服务器上验证 - 确保提供给您的数据有效。示例可能是:验证类型(int,字符串等),验证值(用户不能订购负数量的项目)等等。如果您正在使用某种类型的MVC-ish框架,则可以在模型层。
将数据存储在数据库中 - 您将使用预准备语句来保护自己免受SQL注入,但您不希望以任何方式操作数据(无htmlentities
等)。
每当您从数据库中获取数据时,您决定是否需要转换HTML实体或根据您是否输出HTML,JSON,XML等进行其他处理。
如果您需要对JSON数组中的数据使用htmlspecialchars
或类似内容,请在将数据放入JSON数组之前执行该操作。