![]() |
1
4
输入和输出没有通用的“过滤”。
验证的目的是确保输入在合理的范围内,比如字符串的长度、美元金额的数字性,或者正在更新的记录是由执行更新的用户拥有的。这是为了保持数据的逻辑一致性,防止人们做一些事情,比如将他们购买的产品的价格归零,或者删除他们不应该访问的记录。它与“过滤”或转义输入中的特定字符无关。
转义是一个上下文问题,只有在处理可能被注入某些字符所毒害的数据时才真正有意义。转义发送到浏览器的数据中的HTML字符。转义发送到数据库的数据中的SQL字符。在JavaScript中写入数据时转义引号
|
![]() |
2
0
最好的办法是两者都过滤掉。只做一个会让你更容易漏掉一个案子,并且会让你面临其他类型的攻击。 如果只进行输入筛选,攻击者可能会找到绕过输入并导致漏洞的方法。这可能是有权访问数据库的人手动输入数据,也可能是攻击者通过FTP或其他未经检查的通道或许多其他方法上载文件。 如果您只做输出过滤,那么您可能会面临SQL注入和其他服务器端攻击。 最好的方法是过滤输入和输出。它可能会导致更多的负载,但大大降低了攻击者发现漏洞的风险。 |
![]() |
3
-1
听起来像语义学。不管怎样,重要的是要记住确保坏数据不会进入系统。 执行输出过滤而不是输入过滤需要SQL注入。
|
![]() |
Karlo · PHP Sqlite PDO最新版本 3 月前 |
![]() |
Malte · 检查远程服务器上是否存在文件(使用PHP)[关闭] 3 月前 |
![]() |
Bard.Mus · 迁移后的数据库字符集环境 4 月前 |