我发现很多信息对消毒,过滤和验证的形式,当涉及到简单的输入,比如电子邮件,电话号码,地址等。
但是,你的应用程序的安全性仅仅与最弱的环节。 如果你的表格也包含了大量的textarea,可以说,你希望用户能够编写灵活,HTML可读项?
例如,这textarea的StackOverflow上允许你格式化文本,包括链接,图片等,当你问一个问题或提交答案。 堆栈溢出需要用户的输入,把它变成自己的数据库,然后在网页上显示出来:图片,链接,和所有。 这意味着他们必须允许HTML标记,特殊字符等。 他们如何,以及如何我,确保没有被投入到我的数据库没有恶意内容?
要获得具体的,这里是安全的实现我已经添加到我的web应用程序:
- PDO与动态数据库投入工作时,准备的语句
- 限于我的用户生产现场的数据库访问较少的权限(所以,如果有人做增益控制,他们将只能够更新,插入,或选择)
- 客户端验证(几乎无用在这种情况下,它只是为了方便用户使用)
- 使用POST,没有得到
- 原来error_display了,所以恶意用户无法探测
我知道最好的做法是过滤和验证POST []使用服务器端验证,但这样做会限制就是我的用户可以提交。 例如,过滤掉所有的HTML标记将禁用链接,图像和格式。 同样的问题与ヶ辆输出滤波。 也许有更细致入微的方式做到这一点?
我还能做些什么来保护呢?
我要补充:显示的任何输出前将有一个温和的过程。 每个用户条目都会有一双眼睛看着它被允许在网站上放之前。 这需要照顾输出滤波的,但输入滤波仍是一个问题。