Sql注入请求体[关闭]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sql注入请求体[关闭]相关的知识,希望对你有一定的参考价值。
我目前正在处理的一个应用程序是暴露于sql注入。该应用程序是Classic asp和asp.net的组合。应用程序使用内联查询,查询不参数化。该企业希望快速修复SQL注入,并且不打算修改代码以引入参数化的行查询或存储过程。所以我们已经完成了以下步骤以避免sql注入
- 在应用程序中创建自定义错误页面,以便不会直接向用户显示易受攻击的代码
- 例如,通过网址引入的注射
http://test.com/test_action.asp?id=3&date=2018&code=CLTCP%27%20UNION%20ALL%20SELECT%20NULL%2CNULL%2CNULL%2CNULL%2CNULL%2C%28SELECT%20Password%2C%20Username%20FROM%20Users%20WHERE%20Username%3D%27test%27%20FOR%20XML%20RAW%2C%20BINARY%20BASE64%29%2CNULL%2CNULL%2CNULL--%20vofp
我们在IIS中的请求筛选中处理了它
- 现在,QA已经确定将一些动态sql查询注入到容易注入的文本框中。有没有任何方法可以全局处理这种注射
该业务阻止您使用全局接受的方式通过参数化查询处理此问题。
然而,作为阻止这次袭击的一部分,另一种全球公认的方式是做input validation。 AKA - 永远不要相信用户输入。这将在客户端和服务器上。
通过在请求过滤器中创建不允许的字符串列表来清理输入是令人钦佩的,但正如您所看到的那样容易出现故障,并且总是能够找到攻击者正在尝试的内容并修改列表。这不是推荐的方法,因为它总是会在您找到新的攻击向量后修改列表。
相反,您可以尝试创建允许的字符串列表。这是首选方式。
我建议在客户端和/或服务器上为code
参数添加验证代码。也许代码字段最多只能有10个字符?您可以在客户端上编写javascript,但客户端很容易被阻止,因此您必须包含服务器端代码检查。
如果你能够在服务器端代码上添加验证,我会考虑允许的代码的最大长度,也许只允许有限的代码列表,如果是这样,那么我将验证字符串是这些代码之一。
如果代码字段只能是a-z字母,那么您可以查看使用正则表达式来验证字符串。这可以在客户端和服务器上完成。在正则表达式上看一下这个SO answer只允许a-z。您的实施将略有不同,但这应该让您走上正确的道路。正则表达式功能强大,几乎可以匹配任何内容,以防您的代码比a-z字母更复杂。
以上是关于Sql注入请求体[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
安全测试 web安全测试 常规安全漏洞 可能存在SQL和JS注入漏洞场景分析。为什么自己没有找到漏洞,哪么可能存在漏洞场景是?SQL注入漏洞修复 JS注入漏洞修复 漏洞存在场景分析和修复示例(代码片段