标签归档:JS

JS安全开发那些事—待完善

jquery框架

jquery中的 $(“x”).html(变量); //如果变量可控,可能会导致XSS、XSIO、CSRF、黑帽seo 等等

js dialog对话框

art.dialog({title:变量,content:变量}); //我在网上看过某些程序的代码,dialog这里的content的变量是根本没有过滤,直接XSS

网页搜索的时候,输出在JS里的情况

例如我搜索xss,然后查看源代码如下:

<script>
 $(document).ready(function(){
var get_data = {name: 'leesec', query: "xss"};
$.get('/test.php, get_data, function (reply) {
         ..........
}
<script>

搜索的时候,在JS里面输出字符
接下来我们只要构造好语句,即可弹框
搜索 “};alert(1);//

<script>
 $(document).ready(function(){
var get_data = {name: 'leesec', query: ""};alert(1);//"}
$.get('/test.php, get_data, function (reply) {
         ..........
}
<script>

js代码里换行的重要性

<script>
alert("12");  //在url地址栏路输入 %0a 可在js里换行 导致XSS
<script>

顺带提一下 %0d%0a 回车换行,用来CRLF 注入

js里jquery,ajax的使用注意事项

<script>
	$.ajax({
		type: 'POST',
		url: '/test.php',
		data: 'id=' + id + '&name=' + name
		success: function(response) {}
	});
<script>

上面这代码是在普通不过的代码,但是呢,如果id和name中有一个变量的值可控,

data:'id=x&name=test'});alert(1);</script>那么我们就能执行js代码了

JS中prototype的含义

javascript中的每个对象都有prototype属性,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用。
举例:

//通过B对象的prototype,访问到A对象的属性和方法
function A(){
this.name="A属性";
this.fangfa=function(){
alert("A方法");
}
}
 
function B(){
}
 
B.prototype=new A(); //我的理解是把A对象中的属性和方法全部克隆到B,但不覆盖B中的数据
var test=new B(); //new 一个对象
alert(test.name); //因为实例化 B的对象,所以会查看B对象<strong>自身</strong>有木有name属性,没有的话就查看prototype克隆的A对象属性,如果都没有,就会弹出undefined的框框
test.fangfa(); //原理同上
 
如果把上面的代码改为
function A(){
this.name="A属性";
this.fangfa=function(){
alert("A方法");
}
}
 
function B(){
this.name="B属性";
this.fangfa=function(){
alert("B方法");
}
}
B.prototype=new A();
var test=new B(); 
alert(test.name);
test.fangfa(); 
//这个例子会弹出B的属性和B的方法,因为实例化B的对象,所以先从B的属性和方法查看

其实就是这么简单。。。

js加载fckeditor编辑器源码

<script type=”text/javascript”>
var ofckeditor=new FCKeditor(‘content’);   //新建对象
ofckeditor.BasePath=”fckeditor/;  //设置编辑器路径 (设置好后,访问该页面会出现fckeditor/editor/…)
ofckeditor.Height=300;   //设置编辑器的高度
ofckeditor.Value=this is a test”;  //初始化值
ofckeditor.Create();  //创建对象
</script>