HTML允许输入的数据过滤,卫生和验证

时间:2013-12-18 05:03:30

标签: php html security validation pdo

在电子邮件,电话号码,地址等简单输入方面,我发现了很多有关消毒,过滤和验证表单的信息。

但是,您应用的安全性与您最薄弱的环节一样强大。如果您的表单还包含一个大型textarea,假设您希望您的用户能够编写灵活的HTML可读条目,该怎么办?

例如,StackOverflow上的这个textarea允许您在提问或提交答案时格式化文本,包含链接,图片等。堆栈溢出需要用户输入,将其放入数据库,然后在Web上显示:图片,链接等。这意味着他们必须允许html标签,特殊字符等。他们如何,以及如何确保没有恶意内容被放入我的数据库?

为了具体说明,以下是我添加到我的网络应用程序中的安全实现:

  1. 使用动态数据库输入时PDO准备语句
  2. 限制我的生产网站对具有较少权限的用户的数据库访问权限(因此,如果有人获得控制权,他们将只能更新,插入或选择)
  3. 客户端验证(在此上下文中几乎没用,只是为了方便用户)
  4. 使用POST,而不是GET
  5. 关闭error_display,恶意用户无法探测
  6. 我知道最佳做法是使用服务器端验证过滤和验证POST [],但这样做会限制我的用户可以提交的内容。例如,过滤掉所有html标签将禁用链接,图像和格式。与htmlentities的输出过滤相同的问题。也许还有一种更细致入微的方法呢?

    我还能做些什么来保证这一点?

      

    我应该补充:在显示任何输出之前会有一个审核过程。在允许每个用户条目被允许放入网站之前,每个用户条目将有一双眼睛看着它。这会影响输出过滤,但输入过滤仍然是一个问题。

1 个答案:

答案 0 :(得分:1)

  

使用动态数据库输入时的PDO准备语句

  

限制我的生产网站对具有较少权限的用户的数据库访问权限(因此,如果某人获得了控制权,他们只能更新,插入或选择)

无用

  

客户端验证(在这种情况下几乎没用,它只是为了用户和方便)

无用

  

使用POST,而不是GET

不相干

  

关闭error_display,恶意用户无法探测

列表中没有关于HTML问题的项目。如果要允许格式化输入,则必须使用BB代码或HTML净化器或类似的东西。