重复:
这是一个安全问题。
我应该在防止黑客入侵的网址中寻找什么?
有没有办法通过在URL中传递来执行javascript?
正如你所看到的,我对这个概念很陌生。
关于这些东西的任何好帖子?
答案 0 :(得分:3)
我不相信你可以通过URL破解。如果您将参数(GET或POST)传递到您的应用程序中,有人可能会尝试将代码注入您的应用程序,这样您的回避将与您为本地应用程序执行的操作非常相似。
确保您没有向SQL或其他从浏览器传递到代码中的脚本执行添加参数,而不确保字符串不包含任何脚本语言。搜索下一个有关您正在使用的开发平台的注入攻击的详细信息,这应该会提供很多好的建议和示例。
答案 1 :(得分:3)
我偶然发现了一个老问题,我认为值得更新...你可以从URL中实际执行javascript,你也可以对它有所了解。我最近只创建了一个会员区域,我想提醒别人他们的密码是什么,所以我一直在寻找一个非本地警报......当然你可以在页面本身嵌入警报,但随后公开。这里的区别是我可以创建一个链接并将一些JS放入href中,因此单击该链接将生成警报。
这就是我的意思>>
<a href="javascript:alert('the secret is to ask.');window.location.replace('http://google.com');">You can have anything</a>
等点击链接后,系统会向用户发出包含该信息的提醒,然后将其转到新页面。
显然你也可以写一个onClick,但是当你把它放到URL中时,href工作得很好,只记得在&#34; javascript:&#34; 之前添加它*在chrome中工作,没有检查任何其他内容。
答案 2 :(得分:2)
只需将Javascript放在URL地址中即可对当前页面执行Javascript,例如
javascript:;alert(window.document.body.innerHTML);
javascript:;alert(window.document.body.childNodes[0].innerHTML);
答案 3 :(得分:0)
这取决于您的应用程序及其对所需安全级别的使用。
在安全性方面,您应该验证从查询字符串或帖子参数中获得的所有值,以确保它们有效。
您可能还希望为其他人添加日志记录,包括分析网络日志,以便您确定是否发生了破解系统的尝试。
我不相信可以将javascript注入URL并运行,除非您的应用程序使用参数而不先验证它们。
答案 4 :(得分:0)
关键是检查您收到的任何信息,然后在服务器上的代码中显示和/或使用。获取/发布表单变量(如果它们包含您存储的javascript,以及稍后重新显示是安全风险)。任何将未经审查连接到sql语句中的东西都会运行。
需要注意的一个潜在问题是与字符编码混淆的攻击。例如,如果我提交一个带有utf-8字符集的表单,但是您存储并稍后在iso-8859-1拉丁语中显示没有翻译,那么我可以通过验证器偷偷摸摸。处理此问题的最简单方法是始终显示和存储在同一字符集中。 utf-8通常是个不错的选择。在这种情况下,永远不要依赖浏览器为您做正确的事情。设置显式字符集并检查您收到的字符集,并在验证之前对预期存储集进行转换。
答案 5 :(得分:0)
URL中的Javascript不会自行执行。这绝不意味着它的安全或被信任。
URL是另一个不受信任的用户输入,GET或POST(或任何其他方法)可能导致严重的漏洞。
一个常见的例子是使用PHP_SELF
,REQUEST_URI
,SCRIPT_NAME
和类似的变量。开发人员会错误地将它们直接回显给浏览器,导致脚本被注入页面并执行。
我建议你开始做分配阅读,这些是一些好的开始:
还可以浏览XSS(跨站点脚本),XSRF(跨站请求伪造)和SQL注入。这将让你开始,但它吸收了大量的信息,所以慢慢来。从长远来看,这是值得的。
答案 6 :(得分:0)
如果链接有javascript:,那么它将运行javascript,否则,我同意其他所有人,没有办法做到这一点。
非常聪明,可以过滤掉它!
答案 7 :(得分:0)
JavaScript注入不会对您的Web应用程序造成攻击。 JavaScript注入只是为浏览器添加JavaScript代码来执行。 JavaScript可能会损害您的Web应用程序的唯一方法是,如果您有博客帖子或其他存储用户输入的区域。这可能是一个问题,因为攻击者可以注入他们的代码并留在那里供其他用户执行。此攻击称为跨站点脚本。最糟糕的情况是Cross-Site Forgery,它允许攻击者注入一个窃取用户cookie的语句,从而向攻击者提供其会话ID。
答案 8 :(得分:0)
我相信正确的答案是&#34;它取决于&#34;。
正如其他人所指出的那样,如果正在处理您的请求的Web应用程序天真地接收并回显收到的有效负载或URL参数(对于GET请求),那么它可能会受到代码注入。
但是,如果Web应用程序清理和/或过滤有效负载/参数,则不应该成为问题。
它还取决于用户代理(例如浏览器),如果在请求中检测到任何代理,则自定义用户代理可能会在没有用户通知的情况下注入代码(不知道任何公共代理,但这也是可能的)