草庐IT

php - Ajax 安全(我希望)

coder 2023-08-05 原文

我正在构建一个浏览器游戏,我使用了大量的 ajax 而不是页面刷新。我正在使用 php 和 javascript。经过大量工作后,我注意到 ajax 并不十分安全。我担心的威胁是说有人想在我的 SQL 服务器上查找某人的信息,他们只需要将正确的信息键入与我的 ajax 调用关联的 .php 文件。我使用的是 GET 样式的 ajax 调用,这是个坏主意。无论如何,经过大量研究后,我已经采取了以下安全措施。我切换到 POST(这实际上并没有更安全,但它的威慑力很小)。我也有一个被引用的地方,它也可以被伪造,但它又是另一个威慑力。

我采取的最终措施是这个问题的重点,当我的网站加载时,我在 session 中生成并保存了一个 80 个字符的十六进制 key ,当我发送 ajax 调用时,我也发送了挑战键的形式为

challenge= <?php $_SESSION["challenge"]; ?>

现在,当 ajax php 文件读取此文件时,它会检查发送的质询是否与 session 质询相匹配。现在这本身不会做太多,因为您可以简单地打开 Firebug 并轻松查看正在发送的挑战。所以我让它做的是,一旦使用该挑战,它就会在 session 中生成一个新挑战。

所以我的问题是,从我的立场来看,这有多安全,看起来人们只能看到发送后的挑战 key 是什么,然后它会更新,并且在发送之前他们无法再次看到它,因此无法从另一个来源发送伪造的请求。因此,是否有人看到此安全方法有任何漏洞或有任何其他想法或想法。

最佳答案

您对“安全”的定义含糊不清。您似乎对防止数据被拦截不太感兴趣,而对防止人们向您的服务器提交自定义请求更感兴趣。那不是安全,那只是良好的应用程序设计——您的程序不应接受导致内部状态中断的请求。您绝对无法阻止人们提交他们想要的任何数据。解决方案是验证他们在服务器端提交的数据,而不是试图阻止他们在客户端提交数据,这总是会失败。

I switched to POST

你不应该打扰;这与安全无关。使用适合请求的 HTTP 动词。你在查询信息吗?使用获取请求。你在更新/插入/删除信息吗?使用帖子。

say someone wants to look up someones information on my SQL server they'd just need to key in right information to my .php file associated

您应该对所有请求进行身份验证,以确保它们可以访问正在查询的数据。 SSL 将帮助您安全地执行身份验证。

when my website is loaded i have a 80 char hex key generated and saved in the session, and when im sending the ajax call i am also sending the challenge key

这不会有帮助。您的问题的整个前提似乎是用户安装了 Firebug 或类似的 HTTP 调试工具。如果他们这样做,您的 session key 将变得毫无用处。

关于php - Ajax 安全(我希望),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5339527/

有关php - Ajax 安全(我希望)的更多相关文章

  1. ruby - 如何使用 Ruby aws/s3 Gem 生成安全 URL 以从 s3 下载文件 - 2

    我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A

  2. jquery - 我的 jquery AJAX POST 请求无需发送 Authenticity Token (Rails) - 2

    rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送

  3. ruby - 如何安全地删除文件? - 2

    在Ruby中是否有Gem或安全删除文件的方法?我想避免系统上可能不存在的外部程序。“安全删除”指的是覆盖文件内容。 最佳答案 如果您使用的是*nix,一个很好的方法是使用exec/open3/open4调用shred:`shred-fxuz#{filename}`http://www.gnu.org/s/coreutils/manual/html_node/shred-invocation.html检查这个类似的帖子:Writingafileshredderinpythonorruby?

  4. ruby - 用 YAML.load 解析 json 安全吗? - 2

    我正在使用ruby2.1.0我有一个json文件。例如:test.json{"item":[{"apple":1},{"banana":2}]}用YAML.load加载这个文件安全吗?YAML.load(File.read('test.json'))我正在尝试加载一个json或yaml格式的文件。 最佳答案 YAML可以加载JSONYAML.load('{"something":"test","other":4}')=>{"something"=>"test","other"=>4}JSON将无法加载YAML。JSON.load("

  5. ruby-on-rails - 您希望看到哪些 Rails 插件? - 2

    您认为可以作为插件很好地存在于您的Rails应用程序中必须实现的哪些行为?您过去曾搜索过哪些插件功能但找不到?哪些现有的Rails插件可以改进或扩展,如何改进或扩展? 最佳答案 我希望在管理界面中看到一个引擎插件,它提供了应用程序中所有模型的仪表板摘要,以及可配置的事件图表。 关于ruby-on-rails-您希望看到哪些Rails插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questio

  6. jquery - 如何将 AJAX 变量从 jQuery 传递到他们的 Controller ? - 2

    我有一个电子邮件表格。但是我正在制作一个测试电子邮件表单,用户可以在其中添加一个唯一的电子邮件,并让电子邮件测试将其发送到该特定电子邮件。为了简单起见,我决定让测试电子邮件通过ajax执行,并将整个内容粘贴到另一个电子邮件表单中。我不知道如何将变量从我的HAML发送到我的Controllernew.html.haml-form_tagadmin_email_blast_pathdoSubject%br=text_field_tag'subject',:class=>"mass_email_subject"%brBody%br=text_area_tag'message','',:nam

  7. ruby-on-rails - 使用 javascript 更改数据方法不会更改 ajax 调用用户的什么方法? - 2

    我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的

  8. ruby-on-rails - 安全地显示使用回形针 gem 上传的图像 - 2

    默认情况下:回形针gem将所有附件存储在公共(public)目录中。出于安全原因,我不想将附件存储在公共(public)目录中,所以我将它们保存在应用程序根目录的uploads目录中:classPost我没有指定url选项,因为我不希望每个图像附件都有一个url。如果指定了url:那么拥有该url的任何人都可以访问该图像。这是不安全的。在user#show页面中:我想实际显示图像。如果我使用所有回形针默认设置,那么我可以这样做,因为图像将在公共(public)目录中并且图像将具有一个url:Someimage:看来,如果我将图像附件保存在公共(public)目录之外并且不指定url(同

  9. ruby - 使写入文件线程安全 - 2

    我在一个ruby​​文件中有一个函数可以像这样写入一个文件File.open("myfile",'a'){|f|f.puts("#{sometext}")}这个函数在不同的线程中被调用,使得像上面这样的文件写入不是线程安全的。有谁知道如何以最简单的方式使这个文件写入线程安全?更多信息:如果重要的话,我正在使用rspec框架。 最佳答案 您可以通过File#flock给锁File.open("myfile",'a'){|f|f.flock(File::LOCK_EX)f.puts("#{sometext}")}

  10. ruby-on-rails - 最灵活的 Rails 密码安全实现 - 2

    关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭8年前。Improvethisquestion我需要实现具有各种灵活需求的密码安全。这些要求基本上取自Sanspasswordpolicy:Strongpasswordshavethefollowingcharacteristics:Containatleastthreeofthe

随机推荐