首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在POST请求中编码最小字符:它是否安全?

在POST请求中编码最小字符:它是否安全?
EN

Stack Overflow用户
提问于 2010-02-26 21:06:25
回答 3查看 679关注 0票数 3

我遇到了一种方法,可以在POST参数的值中仅编码以下4个字符:# ; & +。如果有问题的话,会引起什么问题呢?

就我个人而言,我不喜欢这样的黑客。我问这个问题的原因是我和它的发明者有争论。

更新.澄清,这个问题是关于在POST体中编码参数,而不是关于在服务器端转义POST参数,例如,在将它们输入到shell、数据库、HTML页面或其他任何东西之前。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-26 22:47:14

rfc1738 (如果使用application/x-www-form-urlencoded编码传输数据):

不安全:字符可能是不安全的,原因有很多。空间字符是不安全的,因为重要的空格可能会消失,当URL被转录或排版或接受文字处理程序处理时,可能会引入不重要的空间。字符"<“和">”是不安全的,因为它们被用作自由文本中URL周围的分隔符;在某些系统中,引号(“”)用于分隔URL。字符"#“是不安全的,应该始终对其进行编码,因为它在万维网和其他系统中用于分隔可能后面的片段/锚标识符的URL。字符"%“不安全,因为它用于对其他字符进行编码。其他字符是不安全的,因为网关和其他传输代理有时会修改这些字符。这些字符是"{“、"}”、“x”、"\“、"^”、"~“、"”、"“和"`”。所有不安全字符必须始终在URL中编码。例如,字符"#“必须在URL中编码,即使在通常不处理片段或锚标识符的系统中也是如此,因此,如果URL被复制到使用它们的另一个系统中,则无需更改URL编码。

票数 2
EN

Stack Overflow用户

发布于 2010-02-26 21:14:51

转义元字符通常是(总是?)是为了防止注射攻击。不同的系统有不同的元字符,因此每个系统都需要有自己的预防注射的方法。不同的系统有不同的转义方式。有些系统不需要转义字符,因为它们有不同的控制和数据通道(例如准备好的语句)。另外,当数据被引入到系统中时,过滤通常是最好的。

最大的问题是,只转义这四个字符并不能提供完全的保护。在过滤您提到的四个字符之后,SQL、HTML和shell注入攻击仍然是可能的。

票数 0
EN

Stack Overflow用户

发布于 2010-02-26 21:21:45

考虑一下:$sql ='DELETE * fromarticlesWHEREid='.$_POST['id'].';

然后输入表单:1' OR '10

然后变成这样:$sql ='DELETE * fromarticlesWHEREid='1' OR '10';

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2344843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档