PHP替换GET方法链接
很抱歉,这个问题可能太宽泛了 我的站点上有一个表,显示数据库中的所有用户。对于数据库中的每一行,我在表中创建一个链接,允许删除相应的用户。我使用PHP替换GET方法链接,php,Php,很抱歉,这个问题可能太宽泛了 我的站点上有一个表,显示数据库中的所有用户。对于数据库中的每一行,我在表中创建一个链接,允许删除相应的用户。我使用http\u build\u query来实现这一点。$qs数组包含我要发送到下一个脚本的变量 echo '<th><div class="right"><a onclick="return confirm(\'Are you sure you want to completely remove '.$name.' from
http\u build\u query
来实现这一点。$qs
数组包含我要发送到下一个脚本的变量
echo '<th><div class="right"><a onclick="return confirm(\'Are you sure you want to completely remove '.$name.' from your officer list?\')" href="./php/remove-officer.php?'.http_build_query($qs, null, '&', PHP_QUERY_RFC3986).'">Remove</a></div></th>';
我最近在这里看到,不应该使用GET
方法来更改db
。我的理解是,这是出于安全原因。
url从未真正显示出来,但如果我转到我的服务器日志,你显然仍然可以看到它
::1--[09/Aug/2019:13:16:42-0500]“获取
/php/remove user.php?user=bob%40builder.net&name=Robert%20Builder&branch=5&officer=n%2Fa&type=Limited&alert=0
HTTP/1.1“302-
在删除脚本结束时,用户会立即重定向回显示users表的页面
因此,我的问题如下:
1.)这是否会对我的数据库/站点造成风险
2.)我可以使用哪些替代方案来提高安全性?如果可能,我仍然希望能够使用Remove
链接
我将在编辑中包含任何要求的附加信息
这是否会对我的数据库/站点造成风险
这里似乎没有任何安全风险……但是GET请求应该是安全的,而且人们都知道会运行预缓存扩展(在访问URL之前将URL中的数据存储在缓存中……在访问过程中删除所有内容)
我可以使用哪些替代方案来提高安全性
使用表单和post请求就可以完成这项工作
<form method="post" action="./php/remove-officer.php" onsubmit="your-js-here">
<input type="hidden" name="user" value="bob">
<!-- etc -->
<button> Remove</button>
</form>
去除
我的建议是,只在后端添加用户ID的链接。相反,您可以在后端编写准备好的语句,以避免SQL注入。另一件事,如果你在你的网站上有一些“级别”的概念,比如普通和管理员,也许你可以避免从你的应用程序中删除管理员。谢谢你的回复,我相信这可以是我的解决方案。不过我有个问题。假设我需要两条关于用户的数据来删除它们。类似于$user
和$name
。有没有办法确保值
可以同时包含$user
和$name
?我的数据库中有一些条目,其中两行可能具有相同的$user
,两行可能具有相同的$name
,但没有一行同时具有相同的名称。@FamousAv8er-请参见
。放入尽可能多的隐藏输入。
<form method="post" action="./php/remove-officer.php" onsubmit="your-js-here">
<input type="hidden" name="user" value="bob">
<!-- etc -->
<button> Remove</button>
</form>