PHP 中不受信任的数据


Untrusted data in php

不受信任的数据是什么意思?是所有动态生成的数据?还是只是来自用户输入的数据?

鉴于这里已经发布了对此和类似问题的回答和评论,您的问题"什么是不受信任的数据"的答案很简单:

来自客户端的所有内容,无论是通过POST,GET,PUT,HEAD,Cookie还是其他任何内容,都应被视为不受信任。

事实上,来自"客户端"的所有数据都不能来自那里,并且始终可以针对滥用服务器软件的任何漏洞进行精心设计,无论您是否使用它。

时期。

不可信数据是指任何可能损害 Web 应用程序的数据。自动生成不会自动使数据变得危险。

一般来说,如果数据来自您不信任的地方或事物,那么它是不可信的。

通常这意味着来自用户土地的任何数据。

保护数据的方式与数据的用途相关。例如,如果您希望将其存储在数据库中,则必须确保正确转义它以防止SQL注入。如果数据将用于执行shell命令,则escapeshellarg和escapeshellcmd是有序的。


跨站点脚本 (XSS) 是一种通常在 Web 应用程序中发现的计算机安全漏洞。XSS 使攻击者能够将客户端脚本注入其他用户查看的网页中。

如果您的 Web 应用显示用户引入的未转义数据,则可能会发生这种情况。一个简单的例子是博客网站,它不会逃避用户的评论。删除HTML实体(如脚本标签,Iframe等)应该足以防止这种攻击。

您需要使用像htmlspecialchars()这样的函数来防止XSS,并将来自用户输入的内容输出到浏览器。

当您回显输入时,请像发布波纹管一样使用它

echo htmlspecialchars($string, ENT_QUOTES, 'UTF-8');

谷歌代码大学也有一些关于网络安全的非常有教育意义的视频。