php 安全和使用 html 链接 (GET) 标记要删除的 mysql 记录

标签 php mysql security delete-row

只是想知道人们是否认为网站使用 html 链接允许用户将他们的文档标记为从他们的安全帐户页面删除是安全的?

我有一个网站,用户可以在注册并登录该网站后创建文档。要删除一个文件,我在他们的帐户页面上包含了每个要标记为删除的文件的链接,如下所示:

http://www.examplewebsitename.com/delete_document.php?docid=5

delete_document 脚本确保 docid 参数是数字,然后使用他们登录时设置的用户 ID 的 session 变量检查此人是否通过查找文档创建者的用户 ID 实际上创建了该文档。如果创建者所在的位置,则它会将文档标记为删除,否则如果当前登录的人不是创建者,则它不会将文档标记为删除并返回错误页面。

您认为这是将文档标记为删除的有效且安全的方法吗,还是我应该使用表单和 Post 来更安全地执行此操作?

最佳答案

关于使用 GET 作为应用的删除操作,我可以考虑三个主要问题。

  1. 语义原因,GET,根据http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html , 应该是一个幂等方法 the side-effects of N > 0 identical requests is the same as for a single request.

  2. 更倾向于CSRF , 有人可以发布指向 http://www.examplewebsitename.com/delete_document.php?docid=5 的链接并将链接包装成一个看起来无害的 anchor
    <a href="http://www.examplewebsitename.com/delete_document.php?docid=5">Click here for free puppy!</a>
    如果用户有任何机会登录并点击他信任的网站上的那个链接,它会无意中让用户删除文档。

  3. 抓取网页和缓存链接的浏览器插件/插件可能会意外抓取链接、打开它并再次删除文档,而您的用户却不知情。

关于php 安全和使用 html 链接 (GET) 标记要删除的 mysql 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9599180/

相关文章:

android:确定范围内wifi网络的安全类型(不连接它们)

javascript - PHP json 编码中的 JSON 格式无效

php - 自动格式化/对齐数组 PhpStorm

php - MYSQL 查询可以直接工作,但不能通过 PHP!

javascript - 通过 iframe 的外部 POST 表单

MySQL降序限制

mysql - 为什么我的自定义 MySQL 函数比查询中的内联函数慢得多?

security - 使用多种身份验证方法的 ASP.NET Core

c# - 在分隔符处拆分字节数组

MySql查询: select a list of tag names and for each tag get the most recently tagged albums information