在电子邮件,电话号码,地址等简单输入方面,我发现了很多有关消毒,过滤和验证表单的信息。
但是,您应用的安全性与您最薄弱的环节一样强大。如果您的表单还包含一个大型textarea,假设您希望您的用户能够编写灵活的HTML可读条目,该怎么办?
例如,StackOverflow上的这个textarea允许您在提问或提交答案时格式化文本,包含链接,图片等。堆栈溢出需要用户输入,将其放入数据库,然后在Web上显示:图片,链接等。这意味着他们必须允许html标签,特殊字符等。他们如何,以及如何确保没有恶意内容被放入我的数据库?
为了具体说明,以下是我添加到我的网络应用程序中的安全实现:
我知道最佳做法是使用服务器端验证过滤和验证POST [],但这样做会限制我的用户可以提交的内容。例如,过滤掉所有html标签将禁用链接,图像和格式。与htmlentities的输出过滤相同的问题。也许还有一种更细致入微的方法呢?
我还能做些什么来保证这一点?
我应该补充:在显示任何输出之前会有一个审核过程。在允许每个用户条目被允许放入网站之前,每个用户条目将有一双眼睛看着它。这会影响输出过滤,但输入过滤仍然是一个问题。
答案 0 :(得分:1)
使用动态数据库输入时的PDO准备语句
右
限制我的生产网站对具有较少权限的用户的数据库访问权限(因此,如果某人获得了控制权,他们只能更新,插入或选择)
无用
客户端验证(在这种情况下几乎没用,它只是为了用户和方便)
无用
使用POST,而不是GET
不相干
关闭error_display,恶意用户无法探测
右
列表中没有关于HTML问题的项目。如果要允许格式化输入,则必须使用BB代码或HTML净化器或类似的东西。