数据过滤,卫生,和验证HTML的允许输入(Data filtering, sanitation, a

2019-10-19 03:01发布

我发现很多信息对消毒,过滤和验证的形式,当涉及到简单的输入,比如电子邮件,电话号码,地址等。

但是,你的应用程序的安全性仅仅与最弱的环节。 如果你的表格也包含了大量的textarea,可以说,你希望用户能够编写灵活,HTML可读项?

例如,这textarea的StackOverflow上允许你格式化文本,包括链接,图片等,当你问一个问题或提交答案。 堆栈溢出需要用户的输入,把它变成自己的数据库,然后在网页上显示出来:图片,链接,和所有。 这意味着他们必须允许HTML标记,特殊字符等。 他们如何,以及如何我,确保没有被投入到我的数据库没有恶意内容?

要获得具体的,这里是安全的实现我已经添加到我的web应用程序:

  1. PDO与动态数据库投入工作时,准备的语句
  2. 限于我的用户生产现场的数据库访问较少的权限(所以,如果有人做增益控制,他们将只能够更新,插入,或选择)
  3. 客户端验证(几乎无用在这种情况下,它只是为了方便用户使用)
  4. 使用POST,没有得到
  5. 原来error_display了,所以恶意用户无法探测

我知道最好的做法是过滤和验证POST []使用服务器端验证,但这样做会限制就是我的用户可以提交。 例如,过滤掉所有的HTML标记将禁用链接,图像和格式。 同样的问题与ヶ辆输出滤波。 也许有更细致入微的方式做到这一点?

我还能做些什么来保护呢?

我要补充:显示的任何输出前将有一个温和的过程。 每个用户条目都会有一双眼睛看着它被允许在网站上放之前。 这需要照顾输出滤波的,但输入滤波仍是一个问题。

Answer 1:

PDO与动态数据库投入工作时,准备的语句

限于我的用户生产现场的数据库访问较少的权限(所以,如果有人做增益控制,他们将只能够更新,插入,或选择)

无用

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

无用

使用POST,没有得到

不相干

原来error_display了,所以恶意用户无法探测

有一个在你的就HTML问题列表中没有的项目。 如果你想允许格式化输入,你可以选择使用BB代码或HTML净化器或类似的东西。



文章来源: Data filtering, sanitation, and validation for HTML-allowed inputs