XSS攻击
Cross Site Scripting,为了与“CSS”区分开来,故简称 XSS,翻译过来就是“跨站脚本”。
XSS 攻击是指黑客往 HTML 文件中或者 DOM 中注入恶意脚本,从而在用户浏览页面时利用注入的恶意脚本对用户实施攻击的一种手段。
存储型 XSS 攻击
将script
作为某个字段提交给服务器,当其他用户打开页面展示该字段时浏览器将其解析为JS并执行
反射型 XSS 攻击
恶意 JavaScript 脚本属于用户发送给网站请求中的一部分,随后网站又把恶意 JavaScript 脚本返回给用户,区别与存储型 XSS 攻击,此时的恶意脚本没有被服务器存储
例如引导用户请求www.baidu.com?name=<script>XXX</script>
,如原本页面逻辑会将name渲染到页面上,则此时XXX脚本会被渲染并执行
一些常用的阻止 XSS 攻击的策略
- 过滤或转码,如
<script>
标签被转换为<script>
- 在vue中使用
v-bind:value
或{{}}
而非v-html
CSRF攻击
CSRF 英文全称是 Cross-site request forgery,所以又称为“跨站请求伪造”,是针对cookie的攻击。黑客通过引诱用户打开黑客的网站,在黑客的网站中真实网站发起跨站请求,并携带了用户的真实Cookie。
通常可以通过Cookies设置samesite
避免。
- 浏览器已经限制跨域为何还会有csrf?
跨域的cookie限制只针对ajax 或者<script>访问,下面的情况都可以正常使用cookie(Cookie 未设置 SameSite 时)
a: 通过window.location.href=xxx 直接调用get请求
b: 通过<form> 表单跨域提交 ,不论post 或者get
c: 通过<iframe> 打开跨域连接
SQL注入
提交带SQL语句的内容给服务器,如服务器直接对该内容做SQL操作就会导致语句被执行
// 设定$name 中插入了我们不需要的SQL语句
$name = "Qadir'; DELETE FROM users;";
mysqli_query($conn, "SELECT * FROM users WHERE name='{$name}'");
ORM自带防SQL注入
SSL
SSH
详见别章
网友评论