我目前有一个相当强大的服务器端验证系统,但我正在寻找一些反馈,以确保我已涵盖所有角度.以下是我正在做的事情的简要概述:
>确保输入不为空或太长
>转义查询字符串以防止sql注入
>使用正则表达式拒绝无效字符(这取决于提交的内容)
>编码某些html标签,例如< script> (所有标签在存储在数据库中时都会被编码,有些标签在查询时会被解码以在页面中呈现)
有什么我想念的吗?代码示例或正则表达式欢迎.
解决方法:
您不应该“转义”查询字符串以防止sql注入 – 您应该使用预准备语句.
理想情况下,您的输入过滤将在任何其他处理之前发生,因此您知道它将始终使用.因为否则你只需要错过一个易受问题影响的地方.