<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Learn Software Development &#187; Security</title>
	<atom:link href="http://learnsoftwareprocesses.com/category/security/feed/" rel="self" type="application/rss+xml" />
	<link>http://learnsoftwareprocesses.com</link>
	<description>All about the processes involved in software development</description>
	<lastBuildDate>Tue, 07 Feb 2012 19:53:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Introduction to Database Encryption</title>
		<link>http://learnsoftwareprocesses.com/2009/09/12/introduction-to-database-encryption/</link>
		<comments>http://learnsoftwareprocesses.com/2009/09/12/introduction-to-database-encryption/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 06:42:34 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Data]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[Encryption]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Database Encryption]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/?p=347</guid>
		<description><![CDATA[<p>Encryption can provide strong security for data, but is that enough ? Data in a database can be accessed by many systems, but developing a database encryption strategy must take many factors into consideration. Where should the encryption be performed, for example — in the database, or in the application where the data originates? Who [...]]]></description>
			<content:encoded><![CDATA[<p>Encryption can provide strong security for data, but is that enough ? Data in a database can be accessed by many systems, but developing a database encryption strategy must take many factors into consideration. Where should the encryption be performed, for example — in the database, or in the application where the data originates? Who should have access to the encryption keys? How much data must be encrypted to provide security? What’s an acceptable trade-off between data security and application performance?<br />
Data encryption is a process of converting stored or transmitted data to a coded form in order to prevent it from being read by unauthorized person. It is an application of a specific algorithm to alter the appearance of data, making it incomprehensible to those who are not authorized to see the information.<br />
There are 2 types of encryption algorithm: -<br />
- Secret key or Symmetric key algorithm: -In this encryption algorithm, a single secret or private key is shared between the sender and receiver. The sender encrypts this using this key and receiver decrypts it using the same key. It is highly assumed that no one else knows the key.<br />
- Public key or Asymmetric key algorithm: &#8211; In this algorithm, every sender and receiver has a pair of keys. One is made public to the network and called public key and the other is kept private to that node called private key. The pair is such made that if the data is encrypted with one of the keys in the pair, it can only be decrypted with other key in the pair. When a sender has to send, it encrypts the data with receiver’s public key &#038; the receiver decrypts it with its private key.</p>
<p>Advice on how to overcome some of the challenges in database encryption:<br />
- Regulatory drivers : Advanced security through database encryption is required across many different sectors, and increasingly to comply with regulatory mandates.<br />
One approach that can help companies address the encryption challenges associated with regulation is the defense-in-depth principle which advocates many layers to strong security – ranging from physical security and access controls to rights assignment and network security, including firewalls and, crucially, encryption of both data at rest and in transit.<br />
- Overcoming key management issues<br />
It is important that database encryption be accompanied by key management; however, statistics show that this is also the main barrier to database encryption. It is well-recognized that key use should be restricted and that key backup is extremely important. An additional best practice rule of encryption is that the encrypted key should never be stored alongside the data it was used to encrypt. Placing encryption keys within the HSM enforces this policy.<br />
- Separation of duties and dual control<br />
Many organizations pay close attention to separation of duties and dual control, which is required to pass audits to show that there are internal controls protecting against rogue administrators or unauthorized employees and is often required by the various regulatory requirements discussed above. </p>
]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2009/09/12/introduction-to-database-encryption/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Database Integrity</title>
		<link>http://learnsoftwareprocesses.com/2009/09/11/database-integrity/</link>
		<comments>http://learnsoftwareprocesses.com/2009/09/11/database-integrity/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 09:31:17 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Data]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Database Integrity]]></category>
		<category><![CDATA[Integrity constraints]]></category>
		<category><![CDATA[Threats]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/?p=343</guid>
		<description><![CDATA[<p>Database Integrity is the preservation of data correctly &#038; implies the process of keeping the dbase away from accidental deletion or alteration. There are following types of integrity constraints:- • Entity integrity constraints • Referential integrity constraints • Domain integrity constraints</p> <p>DATABASE SECURITY: &#8211; Database security is a measurement of confidence that the integrity of [...]]]></description>
			<content:encoded><![CDATA[<p>Database Integrity is the preservation of data correctly &#038; implies the process of keeping the dbase away from accidental deletion or alteration.<br />
There are following types of integrity constraints:-<br />
• Entity integrity constraints<br />
• Referential integrity constraints<br />
• Domain integrity constraints</p>
<p>DATABASE SECURITY: &#8211; Database security is a measurement of confidence that the integrity of a system and its data will be preserved.<br />
Database security is assigned to address the following issues:-<br />
• Privacy of data elements<br />
• Preserving policies of organization<br />
• System related security level<br />
• Maintaining integrity of the database</p>
<p>Data integrity can be compromised in a number of ways:<br />
- Human errors when data is entered.<br />
- Errors that occur when data is transmitted from one computer to another.<br />
- Software bugs or viruses.<br />
- Hardware malfunctions, such as disk crashes.<br />
- Natural disasters, such as fires and floods.</p>
<p>There are many ways to minimize these threats to data integrity. These include:<br />
- Backing up data regularly.<br />
- Controlling access to data via security mechanisms.<br />
- Designing user interfaces that prevent the input of invalid data.<br />
- Using error detection and correction software when transmitting data. </p>
<p>* Declarative Ease<br />
Define integrity constraints using SQL statements. For these reasons, declarative integrity constraints are preferable to application code and database triggers. The declarative approach is also better than using stored procedures, because the stored procedure solution to data integrity controls data access, but integrity constraints do not eliminate the flexibility of ad hoc data access.<br />
* Centralized Rules<br />
Integrity constraints are defined for tables (not an application) and are stored in the data dictionary. Any data entered by any application must adhere to the same integrity constraints associated with the table.<br />
* Maximum Application Development Productivity<br />
If a business rule enforced by an integrity constraint changes, then the administrator need only change that integrity constraint and all applications automatically adhere to the modified constraint.<br />
* Superior Performance<br />
The semantics of integrity constraint declarations are clearly defined, and performance optimizations are implemented for each specific declarative rule.<br />
* Flexibility for Data Loads and Identification of Integrity Violations<br />
You can disable integrity constraints temporarily so that large amounts of data can be loaded without the overhead of constraint checking.<br />
* The Performance Cost of Integrity Constraints<br />
The advantages of enforcing data integrity rules come with some loss in performance. </p>
]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2009/09/11/database-integrity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Overview of Database Security</title>
		<link>http://learnsoftwareprocesses.com/2009/09/11/overview-of-database-security/</link>
		<comments>http://learnsoftwareprocesses.com/2009/09/11/overview-of-database-security/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 09:17:44 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Data]]></category>
		<category><![CDATA[Database security]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Structured Query language]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/?p=341</guid>
		<description><![CDATA[<p>Database security is the set of systems, processes, and procedures that protect a database from unintended activity. Unintended activity can be categorized as authenticated misuse, malicious attacks or inadvertent mistakes made by authorized individuals or processes. Database security is also a specialty within the broader discipline of computer security. The database is the entity where [...]]]></description>
			<content:encoded><![CDATA[<p>Database security is the set of systems, processes, and procedures that protect a database from unintended activity. Unintended activity can be categorized as authenticated misuse, malicious attacks or inadvertent mistakes made by authorized individuals or processes. Database security is also a specialty within the broader discipline of computer security. The database is the entity where all the data is stored, so protecting it from unauthorized access and change is extremely critical.<br />
Traditionally databases have been protected from external connections by firewalls or routers on the network perimeter with the database environment existing on the internal network opposed to being located within a demilitarized zone.<br />
Database security can begin with the process of creation and publishing of appropriate security standards for the database environment. The standards may include specific controls for the various relevant database platforms; a set of best practices that cross over the platforms; and linkages of the standards to higher level polices and governmental regulations.<br />
One of the easiest steps to take is regarding passwords. Default or weak passwords are still often used by enterprises to protect an online asset as important as a database, but it&#8217;s a problem that&#8217;s easy to fix. The remedy is enforcing a strong password policy; that is, passwords must be changed regularly and be at least 10 digits long and contain both alphanumeric characters and symbols.<br />
SQL Injection attacks pose tremendous risks to web applications that depend upon a database back-end to generate dynamic content. In this type of attack, hackers manipulate a web application in an attempt to inject their own SQL commands into those issued by the database. To prevent this type of attack, it is essential to ensure that all user-supplied data is validated before letting it anywhere near your scripts, data access routines and SQL queries, and preferably use parametrized queries. Another reason to validate and clean data received from users is to prevent cross-site scripting (XSS) attacks, which can be used to compromise a database connected to a Web server.<br />
A database security program should include the regular review of permissions granted to individually owned accounts and accounts used by automated processes. The accounts used by automated processes should have appropriate controls around password storage such as sufficient encryption and access controls to reduce the risk of compromise.<br />
The software used for the database, for the middle layers and for all other layers should be updated regularly with patches, updates and fixes. Falling behind in this task is pretty painful if you end up exposing holes in the software to attackers (and attackers know that a number of companies do not upgrade their systems on an immediate basis).</p>
]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2009/09/11/overview-of-database-security/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Overview Of The Application Layer</title>
		<link>http://learnsoftwareprocesses.com/2009/08/03/overview-of-the-application-layer/</link>
		<comments>http://learnsoftwareprocesses.com/2009/08/03/overview-of-the-application-layer/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 04:41:13 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Application Layer]]></category>
		<category><![CDATA[Cryptography]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Computer networks]]></category>
		<category><![CDATA[The Application layer]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/?p=275</guid>
		<description><![CDATA[<p>Computer networks are inherently insecure. To keep information secret, it must be encrypted. Encryption protocols fall into two general classes: secret key (e.g. DES, IDEA), and public key (e.g. RSA). Using these protocols is straight-forward; the hard part is key management. In addition to providing secrecy, cryptographic protocols can also provide authentication. Finally, cryptography can [...]]]></description>
			<content:encoded><![CDATA[<p>Computer networks are inherently insecure. To keep information secret, it must be encrypted. Encryption protocols fall into two general classes: secret key (e.g. DES, IDEA), and public key (e.g. RSA). Using these protocols is straight-forward; the hard part is key management.<br />
In addition to providing secrecy, cryptographic protocols can also provide authentication. Finally, cryptography can also be used to allow messages to be signed in such a way that the sender cannot repudiate them after they have been sent. Naming in the Internet uses a distributed database system, DNS. Domain Name Server(DNS) holds records with IP addresses, mail exchanges, and other information. By querying a DNS server, a process can map an Internet domain name onto the IP address used to communicate with that domain.<br />
As networks grow larger, they become harder to manage. For this reason, special network management systems and protocols have been devised, the most popular of which is SNMP. This protocol allows managers to communicate with agents inside devices to read out their status and issue commands to them.<br />
Four major network applications are electronic mail, USENET news, the World Wide Web, and multimedia. Most email systems use the mail system defined in RFCs 821 and 822. Messages sent in this system use system ASCII headers to define message properties. These messages are sent using SMTP. Two systems for securing email exist, PGP and PEM.<br />
USENET news consists of thousands of newsgroups on all manner of topics. People can join newsgroups locally, and can then post messages all over the world using the NNTP protocol, which has some resemblance to SMTP.<br />
The World Wide Web is a system for linking up hypertext documents. Each document is a page written in HTML, possible with hyperlinks to other documents. A browser can display a document by establishing a TCP connection to its server, asking for the document, and then closing the connection. When a hyperlink is selected by the user, that document can also be fetched in the same way. In this manner, documents all over the world are linked together in a giant web.<br />
Multimedia is the rising star in the networking firmament. It allows audio and video to be digitized and transported electronically for display. Most multimedia projects use the MPEG standards and transmit the data over ATM connections. </p>
]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2009/08/03/overview-of-the-application-layer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testing of Web Applications</title>
		<link>http://learnsoftwareprocesses.com/2009/03/01/testing-of-web-applications/</link>
		<comments>http://learnsoftwareprocesses.com/2009/03/01/testing-of-web-applications/#comments</comments>
		<pubDate>Sun, 01 Mar 2009 17:35:38 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Load]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Web Applications]]></category>
		<category><![CDATA[WebApp]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/?p=163</guid>
		<description><![CDATA[<p>The quality of a web application can be pretty evident right from the onset (from the beginning of testing). Some of the key things to check for, and that are visible right in the beginning are: - Slow response time, - Problems with the accuracy of information, - Bad design / workflow problems or not [...]]]></description>
			<content:encoded><![CDATA[<p>The quality of a web application can be pretty evident right from the onset (from the beginning of testing). Some of the key things to check for, and that are visible right in the beginning are:<br />
- Slow response time,<br />
- Problems with the accuracy of information,<br />
- Bad design / workflow problems or not having ease of use will compel the user<br />
to click to a competitor&#8217;s site<br />
Problems such as these that are easily visible directly translate into loss of users, declining or stagnant sales and a very poor image of the company.</p>
<p>These are outcomes that companies seek to avoid at any costs, and that is why there is the need for a strong QE effort. As a part of this, the following techniques can be used to do a more thorough checking:<br />
1. Good Functionality testing &#8211; This sort of testing makes sure that the features that are visible to a user and affect interactions are working properly and as desired.<br />
Some of these objects in a WebApp include: User enterable forms, Searches and their results, Pop-up windows (most users hate them because of their heritage), shopping carts.</p>
<p>2. Usability testing &#8211; Many users have a low tolerance for anything that is difficult to use, making having a usability testing program a critical part of the testing of any WebApp. You need to ensure that a user&#8217;s first impression is very important; what makes this more complex is that now-a-days applications have become complicated and cluttered with an increasing number of features. </p>
<p>The main steps involved in usability testing are:<br />
    &#8211; Identify the purpose of WebApp.<br />
    &#8211; Identify the intended users.<br />
    &#8211; Define the tests, review them for thoroughness and conduct usability testing.<br />
    &#8211; Collect information through various mechanisms.<br />
    &#8211; Carry out an analysis of the acquired information.<br />
    &#8211; Make the necessary changes based on the acquired information.</p>
<p>3. Navigation testing &#8211;  Navigation testing makes sure that all navigation syntax and semantics are exercised to uncover any navigation errors. It should not happen that a user clicks on a navigation aid and then either reaches a dead end or goes off into a wrong direction.</p>
<p>4. Forms testing &#8211; WebApps that use forms requires tests to ensure that each field is working properly (including the validations such as not allowing users to enter more than a certain amount of text, fields not being left blank, etc) and that the form posts all the data as intended by the designer.</p>
<p>5. Content testing &#8211; Content is evaluated at both a syntactic and semantic level.At the syntactic level, spelling, punctuation, and grammar are assessed. At semantic level, correctness, consistency, and lack of ambiguity are all assessed. It creates a very bad impression if the user finds spelling mistakes (user assumes that there must be something wrong if the company put wrong spellings or wrong grammar and did not find it till now, or the company does not care that there are problems on the site)</p>
<p>6. Compatibility testing &#8211; This testing is done by executing the webApp under every browser/ platform combination to ensure that the web applications are working properly under different environments. This sort of testing is easier said than done, since the number of browsers and operating systems in the market are huge.</p>
<p>7. Performance testing &#8211; This testing evaluates the system performance under normal and heavy usage. An application that takes long to respond may frustrate the user which could result to move to a competitor&#8217;s site. This testing ensures that the website server responds to browser requests within defined parameters. The system should work perfectly and speedily under normal expected usage, and if possible, should be handle some amount of extra load.</p>
<p>8. Load testing &#8211; The purpose of this testing is to present real world experiences, typically by generating many users simultaneously accessing the web application. Typically, companies use automated test tools to increase the ability to conduct<br />
a valid load test as it emulates thousand of users by sending requests simultaneously to the application. Critical, as failure under heavy loads does not convey a good impression, and may make the system susceptible to attacks by recreating heavy loads.</p>
<p>9. Security testing &#8211; Security is one of the primary concerns when communicating and conducting businesses over internet. One break-in can spoil the reputation of a company and lead to loss of business, stealing of user data, and other such cases with horrible consequences. Finding the vulnerabilities in an application that could grant an unauthorized user to access the system is important. Equally important is being able to track all access to the system, and do a frequent scan of these accesses.</p>
]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2009/03/01/testing-of-web-applications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

