PDO准备好的声明是否足够

时间:2016-04-01 06:07:38

标签: javascript php mysql pdo

从安全角度来看,PDO准备好的语句是否足以防止与mysql相关的安全问题?或者我应该是字符验证服务器端。目前我正在使用pdo预处理语句和客户端javascript表单检查(但据我了解它可以禁用javascript)。

Kindest Regards,

克里斯

2 个答案:

答案 0 :(得分:0)

这里实际上有三个问题,每个问题都需要采用不同的方法。

数据验证关注验证是否提供了所有必需的表单参数,它们是可接受的长度并且具有正确的内容类型。如果您没有可信任的ORM,则需要自己完成此操作。

数据转义涉及以避免SQL注入的方式将数据插入数据库。准备好的陈述是保护这一点的好工具。

数据显示关注避免XSS问题,您正在显示的内容可能被误解为脚本或HTML。您至少需要使用htmlspecialchars

请注意,如果您使用development framework,则所有这三个问题都已解决。值得一看的好人是Laravel,因为文档很全面,让您体会这一切如何融合在一起,但还有很多其他选择。

答案 1 :(得分:0)

您可以将数据直接传递到您的数据库中,但如果用户提交的数据是闪避,或者它可能只是无效,该怎么办?他们可能会提交一封信而不是一个号码,或者该电子邮件地址可能包含无效的字符。

您可以使用内置的Filters PHP增强服务器端的验证。

您可以使用它们来清理和验证您的数据。

Validation filters检查用户提供的数据是否有效。例如,电子邮件是否有效?这个数字实际上是一个数字吗?文本是否与某个正则表达式匹配?

Sanitization filters基本上删除了给定数据类型的无效字符。即删除不安全的字符,删除无效的电子邮件/ URL字符,删除非数字字符。

有一个bunch of helper methods可以清理和验证单个值,数组和关联数组以及_GET_POST数组。

Nettuts有一些很好的教程herehere