这个问题是ZEND的PHP 7认证指南的一部分。指南中提供的答案似乎是错误的!我的答案是跨站点脚本。然而,指南提供的答案是“跨站点脚本”& "SQL注入“。这听起来不对。转义输入可以防止SQL注入。如果我错了,请纠正我!?
发布于 2018-11-22 03:13:34
是的,我认为你是绝对正确的。我认为你的认证指南是错的。不管怎样,一开始似乎是个摇摇欲坠的问题。
在XSS和SQL注入中,关键是在上下文中使用任意数据,而不将其转换为上下文。在某种程度上,这是为了消除“命令”中“数据”的歧义。
对于HTML,“数据”是这个任意的数据,大概是文本。如果要在HTML中使用文本,则必须转义保留字符,这样文本就不会被解释为HTML。
同样,在SQL中,如果要将任意值连接到查询中,则需要确保它们不会被解释为查询本身的一部分(比如引号或其他什么),否则就会有糟糕的一天。(更好的做法是,使用准备好的/参数化的查询,从根本上将数据与查询本身分开,这就成为了一个没有问题的问题。)
转义输出与SQL注入有任何关系是毫无意义的。除非该“输出”是要输出到数据库服务器的查询。
https://stackoverflow.com/questions/53423322
复制相似问题