2014-01-09 44 views
0

如何避免用户更改控制台中的值。例如我的链接是: example.com/delete.php?id=8。当我打开我的控制台并将8更改为10时,第10行将被删除。避免更改控制台中的值

我该如何避免这种情况?或者,我可以做到这一点,而不是网址?

+0

我不认为你可以“改变”浏览器行为。 – Goikiu

+0

但是我怎样才能避免这种情况? –

+0

如果用户有权利“特权”,他们可以(我认为)修改id8和id10,所以没有区别。你可以“停止”一个没有任何授权的用户。 – Goikiu

回答

0

您可以使用<form method=post action=delete.php ><button type=submit value=8 name=id>delete</button></form>,然后在PHP中使用$_POST['id']而不是$_GET['id']

您还可以使用$_SESSION s来查看用户是否已登录并且是否允许删除该用户ID;例如,提供网页时设置一些为$_SESSION['allow_id'] = 8,然后,在PHP端,你可以做一些如:

if ((!empty($_SESSION['allow_id'])) && (!empty($_POST)) && ($_SESSION['allow_id'] == $_POST['id'])) { // allow the deletion } else { // don't allow }

+0

如果你在客户端的批处理中使用相同的标签,并且你想要什么值作为值?它不能解决安全问题。 –

+0

编辑了解决安全问题的答案 – MoshMage

0

应用程序的安全性绝不是只在客户端上。

您必须始终考虑在客户端调用的URI不仅可以通过表单调用。

如果您的界面提供了一个简短的选项列表,那么webservice或服务器脚本必须在进行任何其他处理之前检查相同的缩小选项列表。

+0

感谢您的回答。做这个的最好方式是什么?你能举个例子吗? –

+0

这取决于上下文以及设计应用程序的时间。例如,如果用户只能删除数据库中的特定项目,那么在删除之前,您必须检查数据库是否允许用户删除URI中给出的项目。 –

+0

仅仅是一个控制查询,你的意思是?和代码:if($ row ['userid'] == $ _SESSION ['userid']){// delete} else {//你不允许}?这是好方法吗? –