为什么浏览器将相同的源策略应用于XMLHttpRequest?它对开发人员来说真的很不方便,但它似乎在实际阻止黑客方面做得很少.有解决方法,它们仍然可以包含来自外部源的javascript(JSONP背后的力量).
这似乎是网络中过时的"功能",它在很大程度上是相互关联的.
我很难弄明白这一点.花了大约4个小时爬网没有SO帖子来救我.
想象一个场景:
我已经编写了一个chrome扩展,它捕获了网页上的一些特定操作(主要是按钮点击).该操作触发一个函数,该函数捕获一些用户信息和按钮信息(页面本身都存在)并显示它
现在我希望插件应该能够将其更新为远程服务器上的数据库设置.
由于我精通PHP(因此MySQL是不错的选择),我正在寻找一种解决方案,以确保只从扩展本身进行更新.
为此,我认为最好的选择是运行一个GET/POST请求,例如http://remoteserver.tld/update-db.php?id = XXXX&action = YYYYY&foo = bar ....等等.但是如果用户打开/传递post vars到插件外的这个url?
数据仍将更新,完整性将丢失!
下一个最好的想法是包含带有请求的密钥,但是扩展程序再次用JS编写,几乎任何人都可以嗅出密钥.
引导我找到更新远程服务器上数据库的最佳方法,并确保操作已通过身份验证.
干杯!
为什么当我们从y.com链接到x.com上的javascript文件(例如google analytics或jquery)时,它不会导致任何跨域安全问题?
例如:
在y.com/index.html中我们有:
<script type="text/javascript" src="http://x.com/jsfile.js" />
Run Code Online (Sandbox Code Playgroud)
我们怎么知道什么时候可以做,什么时候不做?
我已经编写(并复制)了几行Javascript,它很有用.但我试图找出一种更好的方法(跨浏览器和更好的性能)来做到这一点.我isInteger从朋友那里复制了这个函数但是我不明白为什么我们在以下条件中检查字符串值:
if (((c < "0") || (c > "9"))) return false;
Run Code Online (Sandbox Code Playgroud)
上面的条件工作正常,但是当我更改它以检查数字值时,功能会中断.输入字段开始接受字母字符.这是我改变时的样子:
if ((( c < 0 ) || ( c > 9 ) return false;
Run Code Online (Sandbox Code Playgroud)
我试图评论部分,以便您可以了解正在发生的事情.此代码中是否还有安全漏洞?我读到1innerHTML1方法可以打开一些安全漏洞,因此我们需要用它执行"清理"操作.因此我选择使用jQuery的.html方法(我是JavaScript的新手)
有问题的页面:http://thehotdeal.net/clients/wehtmlit/index.php?order /
$(document).ready(function() {
var total = 0;
function calcTotal() {
/* fetching some values from PHP variables and then performing calculations.
essentially this is multiplying number of pages by price per page
*/
/* <![CDATA[ */
var total_price_main_pages = ($("#pages").attr("value")) * (<?php echo $main_price; ?>), …Run Code Online (Sandbox Code Playgroud) 我们使用 jquery fileupload 将文件(和文件夹)从本地计算机拖放到浏览器。这很好用,但我们无法捕获文件夹内文件的目录结构。我理解为什么(从安全角度和 JavaScript 角度来看)这不起作用,但是有人对实现相同目标的最佳方法有任何想法吗?
再次,我希望我的客户(内部应用程序)将文件夹拖放到我的应用程序中。我的应用程序可以看到文件名列表并上传它们,但我想保留这些文件的目录结构以供在其他地方使用。即,对我来说重要的是知道它来自目录 x/1/a 而不是 y/2/b。
提前致谢!
javascript jquery file-upload javascript-security jquery-file-upload
所以,我今天刚才注意到你可以在Chrome控制台中运行javascript.我不知道你能做到这一点.这真的很酷.
在我的rails应用程序中,我有一个外部JavaScript页面.我希望该页面上的一些变量是全局的,以便JS文件中的所有函数都可以访问它们.例如,我有一个地图,我希望地图对象在javascript文件中是全局的,因为这样我所有的函数都可以访问一个地图变量而不是创建自己的地图变量,我可以将复杂的操作分解为更小的函数.
这一切都很好,我知道如何做到这一点,它的工作完美.我现在的问题是,我可以保护外部的变量吗?例如,您可以从chrome控制台更改所有javascript类变量的值.以及例如地图中的方法是可访问且可以进行的.我已将地图设置锁定在其中一个页面上,因此它不可缩放或可移动,但从控制台我可以简单地说map.setZoom(11),地图将缩放到11 ..我可以键入map.dragable = true和bam你可以拖动地图..我真的不喜欢这个..
它不是太糟糕,但用户启用地图拖动和缩放不是世界上最糟糕的事情..但我仍然想禁用它.有任何想法吗?
编辑
谢谢大家的回答和评论.我想我只会诉诸于不把任何可以被恶意转化为我的javascript的东西,并做一些事情,比如将我的地图变量传递给必要的功能以减慢人们的速度.
这是一个javascript安全问题:假设页面找出计算机的屏幕分辨率,例如1024 x 768,并且想要使用AJAX调用将此数据记录到数据库中.
有没有办法真正防止伪数据输入数据库?我认为无论HTML或Javascript做什么,用户都可以对代码进行反向工程,以便将一些假数字输入数据库,或者是否有办法防止它完全发生?(100%安全).
更新:或者在类似的情况下......如果我写一个简单的javascript游戏......有没有办法让用户通过AJAX发回分数并谎称他们的分数?
反正有隐藏或保护我的JavaScript代码.因为任何人都可以使用查看页面源轻松地在我的网站上看到我的javascript逻辑,这对我有害.请告诉我您保护javascript代码或使用任何加密方法难以理解的任何方法都无法轻松解密.
javascript ×6
security ×3
jquery ×2
console ×1
csrf ×1
file-upload ×1
html ×1
jsonp ×1
mysql ×1
php ×1