对于XSS、Sql Injection、Denial of Service等常见的Web 攻击,您必须具备哪些防御方法?
编辑:我根据维基百科的描述收集了您的回复。我添加了一些额外的问题以获得完整的参考。
Sql 注入
SQL 注入是一种代码注入技术,它利用应用程序数据库层中出现的安全漏洞。当用户输入被错误地过滤为嵌入在 SQL 语句中的字符串文字转义字符或用户输入不是强类型并因此意外执行时,就会出现此漏洞。它是一类更普遍的漏洞的一个实例,只要将一种编程或脚本语言嵌入到另一种中,就会发生这种漏洞。
- 不要相信用户输入并尽早验证它。
- 不要从原始用户输入构建 SQL,而是使用参数。
跨站脚本 (XSS)
跨站脚本是一种通常在 Web 应用程序中发现的计算机安全漏洞,它允许恶意 Web 用户将代码注入到其他用户查看的网页中。此类代码的示例包括 HTML 代码和客户端脚本。攻击者可以利用被利用的跨站脚本漏洞绕过同源策略等访问控制。
- 切勿逐字输出或执行用户提交的内容。
- HTML 编码所有输出。
拒绝服务攻击
拒绝服务攻击(DoS 攻击)或分布式拒绝服务攻击(DDoS 攻击)是试图使其目标用户无法使用计算机资源。尽管 DoS 攻击的实施方式、动机和目标可能会有所不同,但它通常包括一个或多个人为阻止 Internet 站点或服务有效运行或完全暂时或无限期地运行而做出的恶意努力.
我知道以编程方式避免拒绝服务攻击似乎是不可能的,但你怎么看?
蛮力攻击
在密码分析中,蛮力攻击是一种通过系统地尝试大量可能性来击败密码方案的方法。例如,密钥空间中的大量可能密钥用于解密消息。在大多数方案中,暴力攻击的理论可能性是公认的,但它的设置方式使得它在计算上不可行。
- 每当登录尝试出错时锁定帐户。永远不允许无限制的重试。
- 当输入的密码错误时添加延迟。
一些额外的问题:
您如何看待尝试根据您的内容发布输入的网络机器人?例如,SO 正在使用图像验证。
您如何看待 javascript eval函数?
有没有办法访问服务器上未暴露于外部的内容。例如,我有一个向我的数据库插入一些重要记录的页面,只有我知道它的 url。有没有办法获得这种文件?我知道你可以设置一些安全规则。
(注意:目录列表已禁用,我托管此文件。)
感谢您的回复!