全面的服务器端验证

con*_*gan 3 php regex validation sql-injection server-side

我目前有一个相当强大的服务器端验证系统,但我正在寻找一些反馈,以确保我已涵盖所有角度.以下是我正在做的事情的简要概述:

  • 确保输入不为空或太长

  • 转义查询字符串以防止SQL注入

  • 使用正则表达式来拒绝无效字符(这取决于提交的内容)

  • 编码某些html标记,例如<script>(所有标记在存储在数据库中时都会被编码,有些标记在查询时会被解码以在页面中呈现)

有什么我想念的吗?代码示例或正则表达式欢迎.

小智 8

您不应该"转义"查询字符串以防止SQL注入 - 您应该使用预准备语句.

理想情况下,您的输入过滤将在任何其他处理之前发生,因此您知道它将始终使用.因为否则你只需要错过一个易受问题影响的地方.

不要忘记在输出上编码HTML实体 - 以防止XSS攻击.