【发布时间】:2013-11-02 21:18:12
【问题描述】:
我想问一下,我在使用 $_GET['something']; 时如何提高安全性?
我的意思是,如何防止人们直接从地址栏执行这些“获取”?因为我有一个测试页面,您可以在其中获得 XP 并从 XP 中获得等级。
看起来像这样:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">
<label for="addxp"><font color="yellow">Add XP:</font></label> <input type="text" name="xpadd"><br>
<input type="submit">
</form>
$xpadd = $_GET['xpadd'];
mysql_query("UPDATE users SET xp=xp + '" . $_GET['xpadd'] . "' WHERE user_id='" . $_SESSION['user_id'] . "'") ;
它正在工作,但是当我在浏览器的地址栏中输入:http://mywebsite.com/xp.php?xpadd=50 时,它会为我的积分增加 50 xp。有人可以告诉我如何防止这种情况发生吗?
【问题讨论】:
-
另外,不要使用
mysql_函数,它们已被弃用。请改用mysqli或PDO。在插入数据库之前转义值也可能是一个好主意。见stackoverflow.com/questions/60174/… -
让他们能够添加 XP 是您最不必担心的,您有一个 SQL 注入 后门 - 左 宽 打开
-
你的脚本需要检查用户此时是否允许添加XP,简单明了。这与 URL 或
$_GET或类似的东西无关,这是您需要处理的简单业务逻辑问题。 -
唯一安全的方法是在内部进行(全部在服务器上,而不是通过
$_GET)。使用$_SESSION或类似的东西。
标签: php html security code-injection