这可能会被标记为重复,但在我的辩护中,我一直在寻找一段时间,我发现的很多信息是关于mysql
或mysqli
充其量或不完整。我想要一个全面的,最新的答案,因为它使用了PDO
和准备好的陈述。正确的方式来处理通过应用程序的数据流
什么是正确的方式来处理数据,因为它在应用程序中移动。
数据是否符合以下理论流程?如果不是,您会推荐哪些改进?
- 正确的表单验证客户端。
- 使用
$_POST
而非$_GET
- 在PHP中,只是数据库插入之前使用
$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
到数据库。 - 如果您的php正在返回一个由AJAX处理的JSON数组,您将如何处理该场景中的输出?这不适用于PHP:
htmlspecialchars($JSON_Array)
在此先感谢您的帮助。
第3步是不需要和误导。在第5步中,'htmlspecialchars'只适用于HTML输出 - 它可以概括为“以适合输出上下文的方式对输出进行编码 - 对HTML使用'htmlspecialchars',对JSON使用'json_encode',对XML使用XML Document方法等等“。 – DCoder
步骤2也许是有问题的(差异是语义上的,而不是技术上的),但是3完全错误。 – Jon
@Dcoder 36 - 处理步骤3的适当方法是什么?或者我想我应该说,步骤3应该是什么? – hyphen