正确保护编辑控件免受SQL注入和无意义字符的侵害
Properly protect edit control from SQL injection and nonsense characters
简介及相关信息:
我有一个编辑控件,用户应该在其中输入公司名称。编辑控件支持区域设置。
问题:
我希望适当地保护它免受SQL injection
攻击和用户输入无意义字符。
我解决问题的努力:
我想在响应WM_CHAR
的子类化过程中丢弃冒号和分号,并在响应EN_CHANGE
时再次执行验证。如果出现问题,我会通知用户并禁用"保存"按钮。
因为我的应用程序是语言环境感知的,所以我需要语言环境感知的函数来测试输入字符。
到目前为止,我发现IsCharAlpha
和IsCharAlphaNumeric
似乎有地区意识(我的英语不是最好的,所以也许我误读了MSDN文档,我为此道歉)。
我也在这里搜索了类似的问题,但没有找到。
问题:
是否丢弃分号只会奏效,还是我需要考虑一些其他字符?
我是否在子类化+ EN_CHANGE
的"正确轨道"上,或者有更好的方法来实现这一点?如果有的话,你能给我指出正确的方向吗?
谢谢。
问好。
SQL注入攻击仅发生在使用用户输入动态创建SQL语句而不首先验证/转义输入时。不要动态创建SQL语句!使用参数化查询或存储过程,那么根本没有SQL注入的风险。
相关文章:
- C++字符*缓冲区的大小
- HEX值到wchar_t字符(UTF-8)的转换
- 为什么 Serial.println(<char[]>);返回随机字符?
- 我的字符计数代码计算错误.为什么
- 字符串-C++后显示的随机字符
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 如何在C++中从字符串中分割字符
- 为什么msgrcv()将垃圾字符馈送到缓冲区
- 指向指向字符数组的指针数组的指针
- 如何用转义符替换字符串中的所有特殊字符
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 比较字符数组
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 如何在C++中确定文本文件中的元素是字符还是数字
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 正在从二进制文件检索数据,无意义字符
- 正确保护编辑控件免受SQL注入和无意义字符的侵害