【发布时间】:2016-01-14 10:43:59
【问题描述】:
有没有办法在我的网站上执行一些代码,代码如下:
$a = $_GET['a'];
$b = 'abc' . $a;
$c = $a;
而且,假设在代码中将不再使用 $a、$b 和 $c 变量 - 只是一个赋值,例如连接。是否可以在这个地方执行一些恶意代码? (实际上我认为答案是否定的,因为那样根本就不可能有卫生设施。
这个怎么样(我很确定,它是易受攻击的,如果我们将一些字符放入 $a,在一些内部 http 和 php 处理过程中,这些字符将被转义为逗号):
$a = $_GET['a'];
$b = "abc $a";
对不起,我知道,这是一个基本的和愚蠢的问题,我应该使用一些好的消毒剂库,不用担心。但我想确定一下,从最基本的开始,我不能说该网站是 100% 安全的,而它没有被黑客入侵,我只能说它是不安全的,当它偶尔被黑客入侵时。
添加: 非常感谢任何破解这两个脚本的示例,我想破解我自己的网站,其中包含上面发布的代码,以便清楚地理解,“在这个地方,如果您以这种方式编程,您的网站将很容易受到攻击,因此您应该以这种(另一种)方式对其进行编程。
【问题讨论】:
-
是的。 XSS(持久或不持久,都构成威胁)和 SQL 注入(假设
$c和$a具有数据库逻辑) -
是的,可以通过XSS,阅读this。
-
您能发布任何可用的 HTTP GET 字符串示例吗?现在,我正在尝试破解我自己的网站,然后清理输入变量以确保破解尝试变得低效
-
如果上述代码 100% 完成,那么唯一可能的漏洞是如果在 url 参数中未设置
a,$a = $_GET['a'];将导致undefined index错误。虽然这听起来并不严重,但取决于服务器的设置方式,此错误消息还可能泄漏目录结构、软件版本等信息,这些信息可能会被用于进一步的攻击。上面的 cmets(关于 XSS、sql inj 和类似的)是无效的,因为它们假定变量是输出或以其他方式进一步使用上面显示的 -
不,那代码是安全的,你是对的。
标签: php security code-injection